package org.test;
import loon.LTransition;
import loon.Screen;
import loon.action.sprite.ISprite;
import loon.action.sprite.effect.BaseEffect;
import loon.action.sprite.effect.FadeDotEffect;
import loon.action.sprite.effect.FadeOvalEffect;
import loon.action.sprite.effect.FadeSpiralEffect;
import loon.action.sprite.effect.FadeTileEffect;
import loon.canvas.LColor;
import loon.event.GameTouch;
import loon.opengl.GLEx;
import loon.utils.Array;
import loon.utils.processes.RealtimeProcess;
import loon.utils.timer.LTimerContext;
public class EffectTest extends Screen {
RealtimeProcess process;
Array<BaseEffect> effects = new Array<BaseEffect>();
public LTransition onTransition() {
return LTransition.newEmpty();
}
@Override
public void draw(GLEx g) {
}
@Override
public void onLoad() {
// 设置背景图片
setBackground("back1.png");
// 插入不同的精灵特效
effects.add(new FadeSpiralEffect(ISprite.TYPE_FADE_IN, LColor.black));
effects.add(new FadeDotEffect(ISprite.TYPE_FADE_IN, LColor.black));
effects.add(new FadeOvalEffect(ISprite.TYPE_FADE_IN, LColor.black));
effects.add(new FadeTileEffect(ISprite.TYPE_FADE_IN, LColor.black));
effects.add(new FadeSpiralEffect(ISprite.TYPE_FADE_IN, LColor.black));
process = new RealtimeProcess() {
@Override
public void run(LTimerContext time) {
// 每次获得第一个集合对象
BaseEffect effect = effects.first();
// 不包含则添加
if (!contains(effect)) {
add(effect);
}
// 完成则删除
if (effect.isCompleted()) {
effects.remove(0);
remove(effect);
}
// 如果全部特效都执行完毕,删除这个游戏进程本身
if (effects.size() == 0) {
kill();
}
}
};
// 加入一个单独的游戏进程
addProcess(process);
add(MultiScreenTest.getBackButton(this,0));
}
@Override
public void alter(LTimerContext timer) {
}
@Override
public void resize(int width, int height) {
}
@Override
public void touchDown(GameTouch e) {
}
@Override
public void touchUp(GameTouch e) {
}
@Override
public void touchMove(GameTouch e) {
}
@Override
public void touchDrag(GameTouch e) {
}
@Override
public void resume() {
}
@Override
public void pause() {
}
@Override
public void close() {
removeProcess(process);
effects.clear();
}
}