Java 在isActionMove()上执行单点触摸
如何在isActionMove()上执行单点触摸,因为当我在精灵上移动手指时,需要多点触摸事件并将分数更新两次Java 在isActionMove()上执行单点触摸,java,android,andengine,sprite,onmousemove,Java,Android,Andengine,Sprite,Onmousemove,如何在isActionMove()上执行单点触摸,因为当我在精灵上移动手指时,需要多点触摸事件并将分数更新两次 mHardware[active] = new Sprite(pX, pY, java, this.getVertexBufferObjectManager()) { @Override public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) { if (p
mHardware[active] = new Sprite(pX, pY, java, this.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) {
if (pSceneTouchEvent.isActionMove()) {
score++;
}
}
};
我不能使用isActionDown,因为这是一款类似水果忍者的游戏,我需要在屏幕上移动手指
现在的问题是,分数有时会增加2,有时会增加3,因为当我在精灵上移动手指时,应用程序会注意到几个短动作,而不是一个动作,您应该使用
private static boolean isFirstMove;
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) {
if (pSceneTouchEvent.isActionDown()) {
isFirstMove = true;
}
if (pSceneTouchEvent.isActionMove()) {
if(isFirstMove) {
score++;
isFirstMove = false;
}
}
if (pSceneTouchEvent.isActionUp()) {
isFirstMove = false;
}
});
你应该使用
private static boolean isFirstMove;
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) {
if (pSceneTouchEvent.isActionDown()) {
isFirstMove = true;
}
if (pSceneTouchEvent.isActionMove()) {
if(isFirstMove) {
score++;
isFirstMove = false;
}
}
if (pSceneTouchEvent.isActionUp()) {
isFirstMove = false;
}
});
如果你发现上面的答案对你来说是正确的,那么我有一些建议。 您必须为游戏场景实现场景和区域触摸事件 SceneTouch事件方法包含两个事件isActionDown()和isActionUp(),如以下代码所示
public void onSceneTouchEvent(...){
if(pSceneTouchEvent.isActionDown()){
isFirstTouch=true;
return true;
} else if(pSceneTouchEvent.isActionUp()){
isFirstTouch=false;
return true;
}
return false;
}
区域触摸方法只包含单个事件isActionMove(),如以下代码所示
public void onAreaTouch(...){
if(pSceneTouchEvent.isActionMove()){
if(isFirstMove) {
score++;
isFirstMove = false;
}
return true;
}
return false;
}
你必须遵循上述策略,因为有些时候你的精灵不会发生欲望事件,所以你不会得到你的欲望结果 如果你发现上面的答案对你来说是正确的,那么我有一些建议。 您必须为游戏场景实现场景和区域触摸事件 SceneTouch事件方法包含两个事件isActionDown()和isActionUp(),如以下代码所示
public void onSceneTouchEvent(...){
if(pSceneTouchEvent.isActionDown()){
isFirstTouch=true;
return true;
} else if(pSceneTouchEvent.isActionUp()){
isFirstTouch=false;
return true;
}
return false;
}
区域触摸方法只包含单个事件isActionMove(),如以下代码所示
public void onAreaTouch(...){
if(pSceneTouchEvent.isActionMove()){
if(isFirstMove) {
score++;
isFirstMove = false;
}
return true;
}
return false;
}
你必须遵循上述策略,因为有些时候你的精灵不会发生欲望事件,所以你不会得到你的欲望结果 julien dumortier给出的解决方案非常有效
static boolean isFirstMove=true;
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) {
if (pSceneTouchEvent.isActionMove()) {
if(isFirstMove) {
score++;
isFirstMove = false;
}
}
})) julien dumortier给出的解决方案非常有效
static boolean isFirstMove=true;
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) {
if (pSceneTouchEvent.isActionMove()) {
if(isFirstMove) {
score++;
isFirstMove = false;
}
}
})) 这是可行的…但是没有太多的效率意味着它有时会失败。请告诉我是否有其他解决方案。我用安德林做了一个“macbouf”游戏,但它非常古老。但我已经使用了这个解决方案。我还记得AndEngine经常检测到两次而不是一次点击。如果这是你的问题,我可以是另一个解决方案。thanx julien dumortier它现在运行良好,很抱歉是我的错误,你的代码是完美的…但没有太多的有效手段,有时它会失败,请告诉我是否有其他解决方案。我与AndEngine制作了一个“macbouf”游戏,但它非常古老。但我已经使用了这个解决方案。我还记得AndEngine经常检测到两次而不是一次点击。如果这是你的问题,我可以是另一个解决方案。thanx julien dumortier现在工作正常,很抱歉,这是我的错误,你的代码是perfect@Alexey如果你有julien给出的解决方案不起作用,给我一些解决方案Alexeyproperly@Alexey如果朱利安给出的解决方案不能正常工作,请给我一些解决方案