gpt4 book ai didi

java - andengine setPosition 不起作用

转载 作者:行者123 更新时间:2023-11-30 03:02:50 29 4
gpt4 key购买 nike

我尝试了以下代码,但是当我第二次单击 mMan1 将其从 520 移动到 422(x 中)时,它什么也没做(当我第一次单击时,setPosition 工作正常)。

    \\ in onCreateScene
mLine1 = new Sprite(422, 321, this.mLine,
getVertexBufferObjectManager());
mLine2 = new Sprite(274, 321, this.mLine,
getVertexBufferObjectManager());
scene.attachChild(mLine1);
Button bu1 = new Button(1, 139, 174, this.mButtonTextureRegion,
getVertexBufferObjectManager()) {

@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X,
float Y) {
if (pSceneTouchEvent.isActionUp()) {
scene.attachChild(mLine1);
scene.detachChild(mLine2);
mLine1.setVisible(true);
mLine2.setVisible(false);
setC(true);
if (b == false || mMan1.getX() == 277) {
mMan1.setPosition(422, 249);
setB(false);
}
}
return true;
};

};

Button bu2 = new Button(2, 500, 174, this.mButtonTextureRegion,
getVertexBufferObjectManager()) {

@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X,
float Y) {
if (pSceneTouchEvent.isActionUp()) {
scene.attachChild(mLine2);
scene.detachChild(mLine1);
mLine1.setVisible(false);
mLine2.setVisible(true);
setC(false);
if (b == false || mMan1.getX() == 422) {
mMan1.setPosition(277, 249);
setB(false);
}
}
return true;
};

};

mMan1 = new Man(3, 520, 249, this.mMan, getVertexBufferObjectManager()) {

@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X,
float Y) {
if (pSceneTouchEvent.isActionUp()) {
if (mMan1.getX() == 520 && c == true) {
mMan1.setPosition(422, 249);
setB(false);
} else if (mMan1.getX() == 238 && c == false) {
mMan1.setPosition(277, 249);
setB(false);
}
if (mMan1.getX() == 422 && mLine2.isVisible() == false
&& mLine1.isVisible() == true && b == false) {
mMan1.setPosition(520, 249);
setB(true);
}
if (mMan1.getX() == 277 && mLine1.isVisible() == false
&& mLine2.isVisible() == true && b == false) {
mMan1.setPosition(238, 249);
setB(true);
}
}
return true;

};

};

boolean 值“b”和“c”默认为真。提前致谢。

最佳答案

问题出在你的条件上。

可能的场景:

第一次点击:mMan1 > 它在 X 中从 520 移动到 422

第 2 次点击:mMan1 > 第 1 和第 2 个“if”因为位置原因不会执行,第 3 和第 4 次因为 line.isVisible() 而不会执行

................

第一次点击:bu1 > 一行不可见,一行可见。玩家的位置没有改变

第 2 次单击:mMan1 > 第 1 个“if”将在 X 中将位置设置为 422,然后(因为你写的是“if”而不是“else if”)下一个“if”将执行,因为 X 是 422 并且线路条件为真。该位置将设置回 522,因此您看不到它。

................

如果您从 bu2 而不是 bu1 开始,则第二次不会发生任何事情,因为最后一个“if”的行条件将为真,但位置不会等于 277。

PS 如果你使用它会更清楚:

mLine2.isVisible()

代替

mLine2.isVisible() == true

对于 boolean 值(! - 对于 false)。

你应该检查你的'if's和'else if's。我猜你在这种情况下的意思是“否则如果”。

PS2 如果您对解决方案感到满意,请将我的帖子标记为答案并为其投票(勾选和向上箭头):)

关于java - andengine setPosition 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22300824/

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