2017-07-07 7 views
1

私はゲームの段階で複数の画面を持っており、それらの間にシンプルなフェードトランジションを実装しています。LibGDX段階が黒色にフェーディングする

これで動作しますが、画面が黒くなるようにしたいと思います。しかし、ゲームのクリアな色は白ですが、ステージだけが明らかに消えて、背景が白く保たれます。ステージにActions.color(Color.BLACK, Interpolation.fade)を追加しようとしましたが、実際には何も起こりません。

どのようにしてフェードトランジションを正しく実装できますか?

答えて

1

Stageには、すべての子を含むグループのみの描画可能なコンテンツはありません。

フルスクリーンブラックImageを作成し、バックグラウンドとしてステージに追加します。その後、あなたの必要な背景として、アクションで白くなるshow()の内部にあります。

@Override 
public void show() { 

    final Image image=new Image(new TextureRegion(GdxTest.getTexture())); 
    image.setSize(stage.getWidth(),stage.getHeight()); 
    image.setOrigin(stage.getWidth()/2,stage.getHeight()/2); 
    image.setColor(Color.BLACK); 

    stage.addActor(image); 
    stage.addListener(new ClickListener(){ 

     @Override 
     public void clicked(InputEvent event, float x, float y) { 

      image.addAction(Actions.sequence(Actions.color(Color.BLACK,2),Actions.run(new Runnable() { 
       @Override 
       public void run() { 
        ((GdxTest)Gdx.app.getApplicationListener()).setScreen(new SecondScreen()); 
       } 
      }))); 

      super.clicked(event, x, y); 
     } 
    }); 

    image.addAction(Actions.color(Color.WHITE,2)); 
} 

getTexture()方法

public static Texture getTexture(){ 

    Pixmap pixmap; 
    try { 
     pixmap = new Pixmap(1, 1, Pixmap.Format.RGBA8888); 
    }catch (GdxRuntimeException e) 
    { 
     pixmap=new Pixmap(1,1, Pixmap.Format.RGB565); 
    } 
    pixmap.setColor(Color.WHITE); 
    pixmap.drawRectangle(0,0,1,1); 

    return new Texture(pixmap); 
}