Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图像按钮不褪色_Java_Android_Libgdx_Imagebutton - Fatal编程技术网

Java 图像按钮不褪色

Java 图像按钮不褪色,java,android,libgdx,imagebutton,Java,Android,Libgdx,Imagebutton,我正在进行屏幕淡入淡出转换,目前我的舞台只包含一个背景图像,一个图像按钮将来还会有一个按钮。现在的问题是背景褪色,而不是imagebutton。你知道我怎么能轻松地把舞台组合在一起,然后一下子消失吗?这是我当前的代码: public class MyActor extends Actor { @Override public void draw( SpriteBatch batch, float parentAlpha ) { batch.setColor( 1

我正在进行屏幕淡入淡出转换,目前我的舞台只包含一个背景图像,一个图像按钮将来还会有一个按钮。现在的问题是背景褪色,而不是imagebutton。你知道我怎么能轻松地把舞台组合在一起,然后一下子消失吗?这是我当前的代码:

public class MyActor extends Actor {

    @Override
    public void draw( SpriteBatch batch, float parentAlpha ) {
        batch.setColor( 1, 1, 1, 1*parentAlpha );

        batch.draw( AssetLoader.bg, 0, 0, ZBGame.VIRTUAL_WIDTH, ZBGame.VIRTUAL_HEIGHT );

        batch.draw( AssetLoader.zbLogo,
                    ZBGame.VIRTUAL_WIDTH / 2-140,
                    ZBGame.VIRTUAL_HEIGHT-AssetLoader.zbLogo.getRegionHeight(),
                    AssetLoader.zbLogo.getRegionWidth(),
                    AssetLoader.zbLogo.getRegionHeight());


        TextureAtlas buttons = new TextureAtlas( Gdx.files.internal("data/texture.txt") );
        Skin skin = new Skin( buttons );

        ImageButtonStyle btnStyle = new ImageButtonStyle();
        btnStyle.up = skin.getDrawable("startBtn");

        ImageButton button = new ImageButton(btnStyle);

        button.addListener(new InputListener( ) {
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                stage.addAction( Actions.sequence( Actions.fadeOut(.5f), Actions.run( new Runnable( ) {
                    @Override
                    public void run() {
                        game.setScreen(new OptionScreen( game ) );
                    }

                }) ) );
                return true;
            }
        stage.addActor(button);
    }
}

@Override
public void show() {
    stage = new Stage( );
    Gdx.input.setInputProcessor(stage);

    MyActor myActor = new MyActor( );
    stage.addActor(myActor);
    stage.addAction( Actions.sequence( Actions.alpha(0), Actions.fadeIn(1)) );
}

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    stage.act(delta);
    stage.draw();
}

我记得一些简单的问题。在添加侦听器之前,请尝试设置ImageButton颜色alpha。到1.0或其他版本只是尝试添加button.setColor1,1,1,1.0f;但还是不行。按钮淡入没有问题,只是没有淡出;控制台输出,点击后会降低alpha值,但图像不会消失,一旦达到0.0就会消失。这可能是一个错误吗?在演员的绘图方法中,您正在创建一个新的ImageButton并添加它。因此,在每秒60帧的速度下一秒钟后,就会有60个按钮,依此类推,直到内存耗尽。因此,行为将是出乎意料的。您的一个按钮可能正在淡出,但其他几百个按钮没有淡出,因此您仍然可以看到它们。实例化类时,只创建一次参与者和地图集。批处理每秒绘制60次。Screen类中的render方法会针对每一帧调用,通常每秒调用60次,除非游戏表现不佳。render方法调用舞台上的draw。舞台召唤吸引了每一位演员。所以一秒钟60次叫抽签。在渲染方法开始时调用Gdx.gl.clear方法来擦除所有内容,以便可以在每个帧上重新开始。