只有在调整大小后才能看到ImageButton - Libgdx

时间:2014-11-07 17:29:11

标签: resize libgdx visibility imagebutton scene2d

我有一个名为" HudBarView"它负责在屏幕顶部绘制HUD栏(暂停按钮,得分等)。

此类扩展了Group类(scene2d)。

我的另一个课程是" HUDManager"它负责游戏中的所有HUD工作,包括HUD Bar。

现在,我目前在HUD栏中只有一个暂停按钮,但问题是 - 只有在我调整屏幕大小后才能看到它。非常奇怪的问题。

这是我的HudBarView类:

package views.hud.views;

import views.renderers.HUDManager;

import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;

import engine.helpers.AssetsManager;
import engine.helpers.Values;

public class HUDBarView extends Group{

    private ImageButton pause;
    private HUDManager hud_manager;
    private Skin skin;
    public HUDBarView(HUDManager hud_manager) {
        this.hud_manager = hud_manager;
        initiate();
    }
    private void initiate() {
        skin = new Skin(AssetsManager.getAsset(Values.BUTTONS_PACK, TextureAtlas.class));
        pause = new ImageButton(skin.getDrawable("pause"));
        pause.setSize(Values.Pause_Width, Values.Pause_Height);
        pause.setPosition(Values.SCREEN_WIDTH - pause.getWidth(), Values.SCREEN_HEIGHT- pause.getHeight());
        addActor(pause);
    }
}

这是我的HUDManager课程:

package views.renderers;

import views.hud.ParticleEffectsActor;
import views.hud.views.HUDBarView;
import aurelienribon.tweenengine.TweenManager;

import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;

import engine.helpers.AssetsManager;
import engine.helpers.UIHelper;
import engine.helpers.Values;

public class HUDManager extends Group {

    private Stage stage;
    private Skin skin;
    private Image text;
    private HUDBarView hudView;

    public HUDManager(Stage stage) {
        this.stage = stage;
        initiate();
        addActor(hudView);
        addActor(particles);
    }

    public void initiate() {
        skin = AssetsManager.getAsset(Values.GAME_SKIN_PACK, Skin.class);
        hudView = new HUDBarView(this);
        particles = new ParticleEffectsActor();
    }

    public Stage getStage() {
        return stage;
    }
}

以下是一些可以帮助您更好地理解问题的照片: 在调整屏幕大小之前(屏幕调整大小并不重要): http://i.gyazo.com/5cc675bde2fcbba7492bba69d4a419c6.png 屏幕调整大小后: http://i.gyazo.com/d6814f3e15b903d59dab74b83e95292c.png

P.S这是我在Game Screen类中的渲染方法(我省略了所有不相关的部分):

public void render(float delta) {
        switch(state) {
        case RUN:
            // if The asset manager is done loading
            if(AssetsManager.update() && !doneLoading) {
                 doneLoading = true;
                 hudManager = new HUDManager(stage);
                 stage.addActor(hudManager);
                 renderer = new GameRenderer(world, camera, batch);
                 loadingRenderer.dispose();
            } else if(doneLoading) {
                renderer.render(delta);
                stage.draw();
                stage.act(delta);
                world.update(delta);
                manager.update(delta);
            }
            // Display loading information
            else
                loadingRenderer.render(AssetsManager.getProgress()*100);
        case PAUSE:
            break;
        }
    }

编辑:在玩了一些代码之后,我发现如果我暂停然后恢复游戏,它会导致ImageButton出现在屏幕上。

0 个答案:

没有答案