from: http://bbs.9ria.com/thread-77302-1-1.html
演示程序
http://www.adamatomic.com/canabalt/
http://www.flixel.org/mode/
Flixel 横板游戏制作教程(一)— HelloFlixel
lixel是啥?一个AS3的2D游戏引擎。简介就这么点了,具体的可以去官方网站看看(flixel.org),或者百度谷歌下都可以看到一些相关的介绍,论坛上也有(http://bbs.9ria.com/viewthread.php?tid=59579&highlight=flixel),不过貌似图片挂了,废话不多说,开始教程部分了。
本教程是根据一个老版本(版本为 1.27)的教程改写而成的,老版本的教程可以在这里看到:http://bbs.9ria.com/viewthread.php?tid=66570&highlight=flixel。本教程的版本为 2.43,官方已经更新到2.5了,请大家注意。
首先,建立游戏的主类。
package { import org.flixel.FlxG; import org.flixel.FlxGame; /** * 这里注释不用理会了 * @author zb */ [SWF(width="640", height="480", backgroundColor="#000000")] public class FlixelGame extends FlxGame { public function FlixelGame():void { //参数1:游戏屏幕的原始宽度,参数2:游戏屏幕的原始高度 //参数3:第一个游戏状态,也就是最初显示的画面。 //参数4:缩放,将原始宽度高度缩放。 super(320, 240, MenuState, 2); //想显示鼠标的话就用下面这句 //FlxG.mouse.show(); } } }
下面看看 MenuState 类:
package { import org.flixel.FlxG; import org.flixel.FlxSprite; import org.flixel.FlxState; /** * ... * @author zb */ public class MenuState extends FlxState { //这里是嵌入的图片资源,基本上flixel的资源都这么做吧。 //对于flash来开发的话,其实这么做也行了。 [Embed(source='media/title.png')] protected var menuImg:Class; public function MenuState():void { //这里别写了 } //重写create方法,相当于构造方法 //但是注意,对于所有的 State,最好用重写该方法来进行初始化 override public function create():void { //这里加入了一个 sprite,并且使用菜单图片 //FlxSprite的参数 //参数1:该sprite的X坐标 //参数2:该sprite的Y坐标 //参数3:该sprite的背景图片的类 add(new FlxSprite(0, 0, menuImg)); } //update,画面更新渲染的方法,类似于Enter_Frame时调用的方法 //一些控制操作也是放在这里进行的,比如按键 override public function update():void { //这里使用了按下 X 键,然后转跳到 下一个 状态 if (FlxG.keys.justPressed('X')) { //转跳是这么做的,Gamestate 就是我们的游戏状态了 //FlxG 提供了一些该引擎的游戏控制方面的方法,可以看看API查看具体功能 FlxG.state = new GameState(); } super.update(); } } }
接下来是游戏状态类 GameState:
package { import org.flixel.FlxState; import org.flixel.FlxText; /** * ... * @author zb */ public class GameState extends FlxState { override public function create():void { //加入了一个 文本 add(new FlxText(50, 100, 200, 'Hello Flixel !!')); } } }
接下来运行看看效果吧~