如何在AndEngine中停止移动修改器?

时间:2016-01-26 07:02:32

标签: andengine

这是我用来在X轴上移动精灵的方法

public void moveX(float constanttime,float fromX,int toX,final Sprite s){
    MoveXModifier mod2=new MoveXModifier(constanttime, fromX, toX);
    s.registerEntityModifier(mod2);
}

当我想开始移动精灵时,我正在调用这个方法。

moveX(5, car1.getX(), -100, car1);

(car1是我要移动的精灵)

我想在用户触摸精灵(car1)时停止移动此精灵。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

实际上,您可以暂停实体修饰符(以及有关特定实体的所有更新)。以下代码允许您根据通过触摸事件操作的布尔值(未注册到代码段中的场景)暂停实体的更新。以下代码片段将导致实体上的修饰符暂停,直到调用isActionUp()为止。您可以通过覆盖实体的onManagedUpdate()方法并传递值0来有效地暂停实体更新(修饰符),该值告诉实体0秒已经过去并且不更新实体修饰符。

boolean isTouched = false;

final Rectangle rectangle = new Rectangle(0, 0, 0, 0, mResourceManager.getEngine().getVertexBufferObjectManager()){

    @Override
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
            float pTouchAreaLocalX, float pTouchAreaLocalY) {

        if(pSceneTouchEvent.isActionDown()){
            isTouched = true;
        }

        if(pSceneTouchEvent.isActionUp()){
            isTouched = false;
        }

        return super
                .onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
    }

    @Override
    protected void onManagedUpdate(float pSecondsElapsed) {
        if(isTouched){
            super.onManagedUpdate(0);
        } else {
            super.onManagedUpdate(pSecondsElapsed);
        }

    }

};