Question

I am trying to run these scale modifiers alternately. the first time lower is called it works. The Raise also works the first time. Neither work after that. The call is made to Lower modifier but it doesnt start for some reason.

Lower = new ScaleModifier(0.5f, 1.0f, 0.8f){
        @Override
        protected void onModifierStarted(IEntity pItem) {
            Log.d(tag, "Lower Started");
            super.onModifierStarted(pItem);
            mIsRaised = false;
        }

        @Override
        protected void onModifierFinished(IEntity pItem) {
            Log.d(tag, "Lower Finished");
            super.onModifierFinished(pItem);
            mIsRaised = false;
        }
    };

    Raise = new ScaleModifier(0.5f, 0.8f, 1.0f){

        @Override
        protected void onModifierStarted(IEntity pItem) {
            Log.d(tag, "Raise Started");
            super.onModifierStarted(pItem);
            mIsRaised = true;
        }

        @Override
        protected void onModifierFinished(IEntity pItem) {
            Log.d(tag, "Raise Finished");
            super.onModifierFinished(pItem);
            mIsRaised = true;
        }
    };
Was it helpful?

Solution

It has been a while since I have used AndEngine, but I believe you may need to call Lower.reset() and Raise.reset() in order to redo the effect.

Modifiers contain a boolean flag called mFinished which is set to false when reset() is called.

OTHER TIPS

Try the following approach using LoopEntityModifier if you want alternating animation of a sprite:

sprite.registerEntityModifier(new LoopEntityModifier(new SequenceEntityModifier(Lower, Raise)));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top