我在精灵上使用了移动修改器,但是当我移动背景并且该精灵移出屏幕时,它会自动返回到屏幕上我如何取消注册它
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);
答案 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
}
});
}
对于所有其他修饰符都相同。 :)