2

我在精灵上使用了移动修改器,但是当我移动背景以及精灵离开屏幕时,它会自动回到屏幕上我是如何取消注册的

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);
4

1 回答 1

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 是要分配的值,循环运行的时间。

要单独取消注册修饰符,您需要在修饰符中单独实现监听器。像

全局声明一个修饰符。然后用它实现监听器。

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
                }
            });
}

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

于 2013-05-30T07:44:29.777 回答