final LoopEntityModifier entityModifier = new LoopEntityModifier(//定义一个循环的Modifier
new IEntityModifierListener() {//新建一个ModifierListener监听器,用来监听Modifier的开始以及结束事件
@Override
public void onModifierStarted(
final IModifier<IEntity> pModifier,
final IEntity pItem) {
EntityModifierExample.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(EntityModifierExample.this,
"Sequence started.", Toast.LENGTH_SHORT)
.show();
}
});
}
@Override
public void onModifierFinished(
final IModifier<IEntity> pEntityModifier,
final IEntity pEntity) {
EntityModifierExample.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(EntityModifierExample.this,
"Sequence finished.",
Toast.LENGTH_SHORT).show();
}
});
}
}, 2, new ILoopEntityModifierListener() {//定义一个循环的ModifierListener监听器,用来监听Modifier循环的开始以及结束的事件。
@Override
public void onLoopStarted(
final LoopModifier<IEntity> pLoopModifier,
final int pLoop, final int pLoopCount) {
EntityModifierExample.this
.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(
EntityModifierExample.this,
"Loop: '" + (pLoop + 1)
+ "' of '" + pLoopCount
+ "' started.",
Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onLoopFinished(
final LoopModifier<IEntity> pLoopModifier,
final int pLoop, final int pLoopCount) {
EntityModifierExample.this
.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(
EntityModifierExample.this,
"Loop: '" + (pLoop + 1)
+ "' of '" + pLoopCount
+ "' finished.",
Toast.LENGTH_SHORT).show();
}
});
}//定义一个动画序列,按顺序执行相应的动画。
}, new SequenceEntityModifier(new RotationModifier(1, 0, 90),//下面这些才是真正的各种各样的动画,以及并行的ParallelEntityModifier
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))));
face.registerEntityModifier(entityModifier);//给face这个精灵注册动画
rect.registerEntityModifier(entityModifier.deepCopy());//应该是将这个Modifier的复制品注册给rect精灵上。
EntityModifierExample
这次看的是EntityModifierExample,关于Modifier的用法,顾名思义,就是用来修饰Sprite类的,具体看代码注释,这样清晰明了点: