如何在andengine中取消注册移动修改器?

时间:2013-05-30 06:11:41

标签: android andengine

我在精灵上使用了移动修改器,但是当我移动背景并且该精灵移出屏幕时,它会自动返回到屏幕上我如何取消注册它

LoopEntityModifier bucket2 =
    new LoopEntityModifier(new SequenceEntityModifier( 
        new MoveModifier(1.5f, 0, 290.9f,270.0f , 210.0f),
        new MoveModifier(1.5f, 290.9f,0,220.0f , 270.0f))); // // new ScaleModifier(2.0f, 1.0f, 0.0f)
    buckt[2].registerEntityModifier(bucket2);

注意:我使用此代码取消注册但未取消注册

buckt[2].unregisterEntityModifier(bucket2);

1 个答案:

答案 0 :(得分:7)

我们在这里看到你使用LoopModifier。因此,在此内部,所有修饰符都会重新运行,因为您没有设置循环编号。要运行一次,请编写如下代码:

LoopEntityModifier bucket2 =
new LoopEntityModifier(new SequenceEntityModifier( 
    new MoveModifier(1.5f, 0, 290.9f,270.0f , 210.0f),
    new MoveModifier(1.5f, 290.9f,0,220.0f , 270.0f)),1); 

这里1是要分配的值,循环运行的时间。

要单独取消注册Modifier,您需要单独在修改器中实现侦听器。喜欢

在全球范围内声明修饰符。然后用它实现监听器。

private MoveModifier aTestModifier;
    public void test() {

     aTestModifier = new MoveModifier(2f, 10, 100, 50, 50,
            new IEntityModifierListener() {

                @Override
                public void onModifierStarted(IModifier<IEntity> pModifier,
                        IEntity pItem) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onModifierFinished(
                        IModifier<IEntity> pModifier, IEntity pItem) {
                    // unregister your modifier 
                    unregisterEntityModifier(aTestModifier);

                    // same for all other modifier
                }
            });
}

对于所有其他修饰符都相同。 :)