OGE引擎的改动器功能非常强大,为我们提供了丰富的改动器的实现类,能够改动实体的属性。提供了移动、旋转、缩放、透明、自己定义序列、同步、循环等功能,并且改变的效果能够当场生效。也能够在某一个时间段内生效并且能够提供一些缓动函数达到更加丰富的效果。
一、Modifier创建
使用实例:
IEntity ball=new Sprite(0,0,ballRegion,this.getVertexBufferObjectManager()); MoveXModifier moveModifier = new MoveXModifier(0.5f,-ball.getWidth(),0); ball.registerEntityModifier(moveModifier); |
AlphaModifier:控制alpha变化的改动器
ScaleModifier:控制缩放变化的改动器
RotationModifier:控制旋转变化的改动器
ColorModifier:控制颜色变化的改动器
LoopEntityModifier:装载一个或多个IEntityModifier的循环改动器
SequenceEntityModifier:装载一个或多个IEntityModifier的顺序改动器
ParallelEntityModifier:装载一个或多个IEntityModifier的同步改动器(例:同一时候对一个Entity放大并旋转)
......
二、EaseFunction使用(缓动函数)
IEntity ball =new Sprite (0,0,ballRegion,this.getVertexBufferObjectManager()); MoveXModifier moveModifier = new MoveXModifier (0.5f,-ball.getWidth(),0,EaseBackInOut.getInstance()); ball.registerEntityModifier(moveModifier); |
在创建Modifier的构造函数中,有个IEaseFunction接口。填入EaseXXX.getInstance();
三、Modifier注冊
当须要使用Modifier时须要调用Entity.registerEntityModifier(final IEntityModifier pEntityModifier)方法进行注冊。
四、Modifier反注冊
在BaseModifier<T>中有一个域autoUnregisterWhenFinished,默认是true,代表Modifier执行完就自己主动反注冊,手动反注冊是调用Entity.unregisterEntityModifier(final IEntityModifier pEntityModifier)。
五、Modifier监听
Modifier构造函数中IEntityModifierListener代表Modifier监听
//Modifier開始时
public void onModifierStarted(final IModifier<T> pModifier, final T pItem);
//结束Modifier时
public void onModifierFinished(final IModifier<T> pModifier, final T pItem);
六、Modifier管理
在Entity中,EntityModifierList是管理当前Entity的Modifier列表,事实上质是个ArrayList,注冊与反注冊事实上就是在这个List中add或者remove处理。