- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我的问题是,当游戏结束时,游戏会进入一个新屏幕(称为“EndState”),我在其中绘制标题“Game Over”和一个名为“Restart”的 ImageButton,因此背景和播放器以及所有内容else 与之前的 Screen 相同,但卡住了。当我点击我的重启按钮时,它在下方移动了 10px(按下效果,使用 pressedOffsetY 实现),但是我在它后面看到了相同的按钮,我发现解决这个问题的唯一方法是在绘制舞台之前在整个屏幕上画一些东西使用此按钮,但这样我会丢失我的播放器图像和前一个屏幕中的所有其他内容。
我使用 Stage(因为它是可点击的)以这种方式绘制 ImageButton:
public class EndState implements Screen {
private Game endGame;
private Texture gameOver, restartBtnTexture; // textures of title and button
private SpriteBatch batch;
private ImageButton restartImgButton; // ImageButton
private Drawable drawable; //drawable, to store the image and then use it in Style
private Stage stage; //the stage which will contain button
private ImageButton.ImageButtonStyle style; // Style
public EndState(final Game game) {
this.endGame = game; //I receive game state from the previous state
gameOver = new Texture(Gdx.files.internal("GameOver.png"));
restartBtnTexture = new Texture(Gdx.files.internal("Buttons/Button_1.png"));
drawable = new TextureRegionDrawable(new TextureRegion(restartBtnTexture));
batch = new SpriteBatch();
style = new ImageButton.ImageButtonStyle(); // creating style
style.imageUp = drawable; 9
style.pressedOffsetY = -10; // when I press the button I move 10px below
restartImgButton = new ImageButton(style); // creating the button and assigning the Style
restartImgButton.getImage().setFillParent(true);
restartImgButton.setBounds(Gdx.graphics.getWidth() / 2 - (Gdx.graphics.getWidth() / 4), Gdx.graphics.getHeight() * 4/8, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 7); // size and position
restartImgButton.getImageCell().expand().fill();
stage = new Stage(); // creating stage
stage.addActor(restartImgButton); //adding button to the stage
restartImgButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
endGame.setScreen(new PlayState(endGame));
}
});
Gdx.input.setInputProcessor(stage);
}
@Override
public void show() {
}
@Override
public void render(float delta) {
batch.begin();
batch.draw(gameOver, Gdx.graphics.getWidth() / 2 - (Gdx.graphics.getWidth() * 2/6), Gdx.graphics.getHeight() * 6/8, Gdx.graphics.getWidth() * 2/3, Gdx.graphics.getWidth() / 3); // drawing Game Over
batch.end();
stage.draw(); // drawing restart Button
}
最佳答案
我认为基本问题是您没有在每次渲染时都清除屏幕(故意如此,但这也会导致您的问题)。
由于您没有清除屏幕,您的最后一个屏幕仍然可见,但在此屏幕上绘制的所有内容也将可见(测试移动按钮的次数超过您现在的位置,您将开始在任何地方看到它的副本移动它)。
简单的解决方案:不要让任何东西在此屏幕上移动
正确的解决方案:因为您希望保留旧图形,所以不要创建新屏幕,只需将按钮 actor 插入前一个屏幕并从那里开始工作
关于java - LibGDX:Buttonis 在舞台上被绘制了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50151876/
如图所示,上面的红色框是一个 GridBox,下面是一个带有 Splitpane (ListView) 和 Gridpane (2 Buttons) 的 VBox。我想要实现的是在单击按钮“隐藏>>"
使用 msfconsole 并搜索 linux x64 有效负载。 我遇到过舞台 Actor 、舞台和单曲?它们都有“reverse_tcp”,可以将连接反转回攻击者。然而我尝试查找舞台 Actor
我正在寻找一种将 3 个 LineCharts 放入单个窗口的方法。我的意思是我想让它们并排放置,或者一个在另一个下面。 我一直在寻找实现它的方法,但找不到任何东西。我试图搜索如何将多个场景放入一个阶
我有一个有效的 Web 功能,它使用 html5 视频和 Canvas 来访问设备相机的媒体流,然后拍照并在 Canvas 中渲染图像。效果很好,但我想使用 konvajs stage 而不是 can
我在解决这个问题时遇到了困难,并且我找不到我遇到的这个问题的正确答案。我希望将一个场景/阶段用作打开另一个场景/阶段的按钮,并且两者都通过相同的方法调用。完整的方法如下: public void c
我在 JavaFX 上有一个简单的应用程序,它实际上由几个 Pane 和按钮组成。我不知道如何在舞台调整大小时移动按钮。所以,我希望左下角的按钮即使在调整窗口大小时也始终可见。 这里是节点概览: 这里
来自 Swing 并且是 JavaFX 的新手,我尝试对 Java FX Stages 和 Scenes 进行子类化。但是我很快就遇到了问题,比如初始化过程中找不到我的子类场景的 init 方法。 所
How to animate or move window using clutter_actor_animate? Here's my code and it didn't work. clutte
有没有办法从关联的类 Controller 中获取 FXML 加载文件的 Stage/Window 对象? 特别是,我有一个模态窗口 Controller ,我需要舞台来关闭它。 最佳答案 我找不到解
我将工作代码分为 2 个文件以避免困惑。以前确实有效,但是将所有场景都放在一个类中是非常不愉快的。 以前,当您单击 Sprite 时,它会将您从菜单带到游戏。然后我将游戏组和游戏场景的代码提取到游戏类
我希望能够将 HTML 文本转换为位图,以便在 AlivePDF 中使用。我的测试适用于 TextArea,或者组件是否在舞台上或可见。但我希望能够处理不一定位于屏幕上的文本块。有谁知道如何做到这一点
我有一个 swing 应用程序,我需要在其中运行并打开 JavaFX 场景/阶段。我必须在没有扩展应用程序的情况下运行它。我已经尝试了 Stackoverflow 上发布的大多数解决方案,但没有一个适
我正在寻找一种方法来缩小 Flash 文件的高度。我可以更改宽度,但高度似乎与其所在窗口的大小有关? http://www.bevelite.com.au/test 我正在使用 page-flip.c
我需要在选择组合框元素时重新绘制窗口。如何在 JAVA FX 2.2 中重绘窗口(舞台)? 下面是我的代码 functionComboBox.valueProperty().addListener(n
我是一名优秀的程序员,十分优秀!