发布时间:2025-12-09 18:50:02 浏览次数:4
from: http://bbs.9ria.com/thread-77302-1-1.html
http://www.adamatomic.com/canabalt/
http://www.flixel.org/mode/
本教程是接着Flixel横板游戏制作教程(六)—SoundsandMusic(音效与音乐)来做的。
下面是 把敌人都干掉后,转跳到胜利画面。
先看看胜利状态类VictoryState:
package {import org.flixel.FlxG;import org.flixel.FlxState;import org.flixel.FlxText;/*** ...* @author zb*/public class VictoryState extends FlxState {//胜利画面的等待时间计数private var _time:Number;override public function create():void {_time = 0;//flash 这里是指,从某个颜色开始过度到透明//参数1:起初显示的颜色//参数2:过度的时间FlxG.flash.start(0xffffffff, 1);//添加一个文本add(new FlxText(100, 50, 100, 'Victory!'));}override public function update():void {//elapsed,该值是指,每一帧所经过的时间_time += FlxG.elapsed;if (_time>5) {//fade,是指从 透明 过度到 想要的颜色//参数1:想要过度的颜色//参数2:经过的时间//参数3:过度结束后,调用的方法FlxG.fade.start(0xffffffff, 1, onPlay);}super.update();}private function onPlay():void{//转跳到 GameStateFlxG.state = new GameState;}}}
接来下是 Gamestate :
package {import org.flixel.FlxG;import org.flixel.FlxGroup;import org.flixel.FlxObject;import org.flixel.FlxState;import org.flixel.FlxText;import org.flixel.FlxTileblock;import org.flixel.FlxU;/*** ...* @author zb*/public class GameState extends FlxState {//*********已有的内容**************////敌人计数器private var enemyCounter:FlxText;override public function create():void {//*********已有的内容**************////加入敌人计数器addEnemyCounter();}//*********已有的内容**************//override public function update():void {//*********已有的内容**************////检查敌人数量checkEnemyCount();//还是要提醒下,别忘了加上。。。super.update();}//*********已有的内容**************//private function addEnemyCounter():void{//加入一个文本,显示敌人的数量enemyCounter = new FlxText(150, 20, 20, String(ENEMY_COUNT));//scrollfactory 属性//表示 该对象 在屏幕移动的时候//跟着屏幕一起移动的比例,范围 在 0 到 1 这个区间//0 表示 不与屏幕移动//1表示 完全跟着屏幕移动//而之间的范围 从 0 开始,越大,随着屏幕移动的距离越大//具体同学们可以自行设置参数理解//x 和 y 分表表示 对水平移动和垂直移动的比例enemyCounter.scrollFactor.x = 0;enemyCounter.scrollFactor.y = 0;add(enemyCounter);}private function checkEnemyCount():void{//计数值,刷新查看 当前敌人组中 死亡敌人的数量var count:int = 0;for each (var enemy:Enemy in enemyGroup.members) {if (enemy.dead) {count++;}}//这里刷新 剩余敌人数量的文本enemyCounter.text = String(ENEMY_COUNT - count);//当 死亡敌人的数量达到 最大敌人数的时候if (count==ENEMY_COUNT) {//过渡白色 ,结束后转跳 胜利状态FlxG.fade.start(0xffffffff, 1, onVictroy);}}private function onVictroy():void{//停止音乐FlxG.music.stop();FlxG.state = new VictoryState;}}}