gpt4 book ai didi

java - LibGdx moveTo 操作未执行

转载 作者:行者123 更新时间:2023-12-01 10:37:39 24 4
gpt4 key购买 nike

我正在制作一个应用程序,但有一个恼人的错误/错误:当我希望我的图像逐渐向上移动时,它不会执行任何操作。这是我的一些代码:

public void checkButtons(){
MoveToAction moveUp = new MoveToAction();
moveUp.setDuration(actionDuration);
moveUp.setPosition(0, Gdx.graphics.getHeight());

MoveToAction moveDown = new MoveToAction();
moveDown.setDuration(actionDuration);
moveDown.setPosition(0, Gdx.graphics.getHeight() - Gdx.graphics.getHeight() * 2);

MoveToAction moveLeft = new MoveToAction();
moveLeft.setDuration(actionDuration);
moveLeft.setPosition(Gdx.graphics.getWidth() - Gdx.graphics.getWidth() * 2, 0);

MoveToAction moveRight = new MoveToAction();
moveRight.setDuration(actionDuration);
moveRight.setPosition(Gdx.graphics.getWidth(), 0);
if (goingUp == true){
red_dot.addAction(moveUp);
if (goingUp == false){
red_dot.removeAction(moveUp);
}
}
if (goingDown == true){
red_dot.addAction(moveDown);
if (goingDown == false){
red_dot.removeAction(moveDown);
}
}
if (goingLeft == true){
red_dot.addAction(moveLeft);
if (goingLeft == false){
red_dot.removeAction(moveLeft);
}
}
if (goingRight == true){
red_dot.addAction(moveRight);
if (goingRight == false){
red_dot.removeAction(moveRight);
}
}

red_dot 是一个图像,其余变量非常简单。提前致谢。

最佳答案

需要检查的一些事项:

  • 您正在调用stage.act()吗?
  • 您的 actionDuration 是否非零?
  • 您确定这些坐标吗?如果您使用 ScreenViewport,它们中的大多数看起来都会在屏​​幕外。如果不是,为什么屏幕的大小与您想要移动对象的位置有关?

看来您对逻辑流程有某种误解。重复四次的代码结构没有意义:

if (someCriterion == true) {;
doSomething();
if (someCriterion == false) {
//Code in here will never be called unless `doSomething()` immediately causes
//someCriterion to become false as a side effect (which addAction() will not do).
}
}

我猜您可能认为 addAction 下的代码会在操作完成后被调用,或者会被重复调用。但事实并非如此。如果您想尽早停止这些操作,则必须在代码中将 goingUp 等变量更改为 false 的位置将其删除。

但是,如果您只是尝试删除已完成的操作,则没有必要,因为这是自动发生的。

此外,您不应该创建所有您可能不会使用的额外操作。你会产生大量可能导致口吃的垃圾。只创建您肯定会使用的操作。使用 Actions.moveTo() 从池中获取所需的操作,而不是使用 new MoveToAction()。那么完成后就不会触发垃圾回收,因为 Stage 知道将池化操作发送回池中进行回收。

关于java - LibGdx moveTo 操作未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com