Опитвам се да използвам модификатор на обект, за да манипулирам някои спрайтове и след като бъде завършен, той трябва да отмени регистрацията си. Добавих и булева стойност, за да гарантирам, че няма да се задейства отново, докато е в движение. Проблемът е, че методите onModifierStarted и onModifierFinished изглежда не се задействат.
Това е кодът, който настройва модификатора на обекта
entityModifier = new SequenceEntityModifier(new IEntityModifierListener() {
@Override
public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
// TODO Auto-generated method stub
enabled = false;
}
@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
// TODO Auto-generated method stub
enabled = true;
pItem.unregisterEntityModifier((IEntityModifier) pModifier);
pModifier.reset();
}
},
new AlphaModifier(2f, 1f, 0f),
new RotationModifier(1, 0, 90),
new AlphaModifier(2, 1, 0),
new AlphaModifier(1, 0, 1),
new ScaleModifier(2, 1, 0.5f),
new DelayModifier(0.5f),
new ParallelEntityModifier(
new ScaleModifier(3, 0.5f, 5),
new RotationByModifier(3, 90)
),
new ParallelEntityModifier(
new ScaleModifier(3, 5, 1),
new RotationModifier(3, 180, 0)
)
);
Това е методът, който регистрира модификатора върху спрайтовете. Това се задейства от събитие с докосване
public void down(){
if (enabled) {
TitleSprite.registerEntityModifier(entityModifier.deepCopy());
OptionsButton.registerEntityModifier(entityModifier.deepCopy());
PlayButton.registerEntityModifier(entityModifier.deepCopy());
}
}