Java 在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

如何在isActionMove()上执行单点触摸,因为当我在精灵上移动手指时,需要多点触摸事件并将分数更新两次

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如果朱利安给出的解决方案不能正常工作,请给我一些解决方案