package org.test; import loon.LTransition; import loon.Screen; import loon.action.sprite.Animation; import loon.action.sprite.Sprite; import loon.action.sprite.SpriteLabel; import loon.canvas.LColor; import loon.event.FrameLoopEvent; import loon.event.GameTouch; import loon.font.Font.Style; import loon.opengl.GLEx; import loon.utils.MathUtils; import loon.utils.timer.LTimerContext; public class AnimationTest extends Screen { int WIDTH = 110; int HEIGHT = 110; String[] character1 = { "ani/yd-6_01.png", "ani/yd-6_02.png", "ani/yd-6_03.png", "ani/yd-6_04.png", "ani/yd-6_05.png", "ani/yd-6_06.png", "ani/yd-6_07.png", "ani/yd-6_08.png", }; String[] character2 = { "ani/yd-3_01.png", "ani/yd-3_02.png", "ani/yd-3_03.png", "ani/yd-3_04.png", "ani/yd-3_05.png", "ani/yd-3_06.png", "ani/yd-3_07.png", "ani/yd-3_08.png", }; String[] character3 = { "ani/yd-2_01.png", "ani/yd-2_02.png", "ani/yd-2_03.png", "ani/yd-2_04.png", "ani/yd-2_05.png", "ani/yd-2_06.png", "ani/yd-2_07.png", "ani/yd-2_08.png", }; String[] character4 = { "ani/wyd-1_01.png", "ani/wyd-1_02.png", "ani/wyd-1_03.png", "ani/wyd-1_04.png", "ani/wyd-1_05.png", "ani/wyd-1_06.png", "ani/wyd-1_07.png", "ani/wyd-1_08.png", }; String[][] characterSkins = { character1, character2, character3, character4 }; //Screen切换特效为像素画风 public LTransition onTransition(){ return LTransition.newPixelWind(LColor.white); } //单独构建一个角色类 class Character extends Sprite { public int speed; public Character(int idx, Animation ani) { this.setAnimation(ani); this.createBloodBar(); this.createNameLabel(idx); } @Override public void onUpdate(long e) { //以指定速度向右移动 move_right(this.speed); if (this.getX() >= getScreenWidth() + WIDTH) { this.setX(-WIDTH); } } public void createNameLabel(int idx) { SpriteLabel label = new SpriteLabel(String.valueOf(idx), 0, 0); label.setFont("Dialog", Style.PLAIN, 10); centerOn(label); label.setY(0); label.setOffset(10,-2); this.addChild(label); } public void createBloodBar() { Sprite bloodBar = new Sprite("ani/blood_1_r.png"); bloodBar.setX(20); this.addChild(bloodBar); } } @Override public void onLoad() { add(MultiScreenTest.getBackButton(this,1)); setBackground("ani/background.png"); // 每隔两秒执行一次 addFrameLoop(2, new FrameLoopEvent() { @Override public void invoke(long elapsedTime, Screen e) { int amount = 100; String[] charSkin; Character chr; //添加一组精灵 for (int i = 0; i < amount; i++) { int idx = MathUtils.random(0, characterSkins.length - 1); charSkin = characterSkins[idx]; //导入精灵图,速度70 chr = new Character(i, Animation.getDefaultAnimation( charSkin, 70)); chr.setLocation(MathUtils.random() * (getWidth() + WIDTH * 2), MathUtils.random() * (getHeight() - HEIGHT)); chr.setZOrder(chr.y()); chr.speed = MathUtils.round(MathUtils.random() * 2 + 3); add(chr); } // 执行以后kill掉当前loop事件 kill(); } @Override public void completed() { } }); } @Override public void draw(GLEx g) { } @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() { } }