Using java Syntax Highlighting
- package com.axl.extras;
- import org.anddev.andengine.entity.IEntity;
- import org.anddev.andengine.entity.modifier.PathModifier;
- import org.anddev.andengine.util.modifier.ease.IEaseFunction;
- public class ExtendedPathModifier extends PathModifier {
- private boolean mStatePaused = false;
- private float mTimeModifier = 1f;
- private IExtendedPathModifierListener mExtendedPathModifierListener;
- public ExtendedPathModifier(final float pDuration, final Path pPath, final IEntityModifierListener pEntityModiferListener, final IPathModifierListener pPathModifierListener,final IExtendedPathModifierListener pExtendedPathModifierListener, final IEaseFunction pEaseFunction) throws IllegalArgumentException {
- super(pDuration,pPath,pEntityModiferListener,pPathModifierListener,pEaseFunction);
- mExtendedPathModifierListener = pExtendedPathModifierListener;
- }
- public ExtendedPathModifier(float pDuration, Path pPath) {
- super(pDuration, pPath);
- }
- public void pauseModifier(){
- if (!this.mStatePaused) {
- this.mExtendedPathModifierListener.onPause(this);
- this.mStatePaused = true;
- }
- }
- public void resumeModifier(){
- if (!this.mStatePaused){
- this.mExtendedPathModifierListener.onResume(this);
- this.mStatePaused = false;
- }
- }
- public void setTimeModifier(final float pTimeModifier){
- mTimeModifier = pTimeModifier;
- }
- @Override
- public float onUpdate(final float pSecondsElapsed, final IEntity pEntity) {
- if (mStatePaused) return 0f;
- if (mTimeModifier!=1f) return super.onUpdate(pSecondsElapsed*mTimeModifier, pEntity);
- return super.onUpdate(pSecondsElapsed, pEntity);
- }
- public static interface IExtendedPathModifierListener {
- // ===========================================================
- // Constants
- // ===========================================================
- // ===========================================================
- // Fields
- // ===========================================================
- public void onPause(final PathModifier pPathModifier);
- public void onResume(final PathModifier pPathModifier);
- }
- }
Parsed in 0.036 seconds, using GeSHi 1.0.8.4
usage is similar to normal pathmodifier with that difference you can call three methods :
Using java Syntax Highlighting
- pauseModifier();
- resumeModifier();
- setTimeModifier(final float pTimeModifier);
Parsed in 0.030 seconds, using GeSHi 1.0.8.4
when called setTimerModifier with for example 2f , sprite will follow the path 2 times faster, and when set 0.5f two times slower.
I'm using it to freeze my enemies or slow them down.
note that you could slow down / speed up all updatehandlers and entitymodifiers with changing pSecondsElapsedin onmanagedupdate of sprite like so :
