教程做者:cls分享站 架构
终于要作游戏项目了那,以前一直作flex应用开发如pdf在线编辑器 什么的,此次终于轮到游戏了,但我真没什么游戏开发经验,因此近来一直在脑补游戏开发知识,偶然发如今这个引擎,感受仍是蛮不错。至于这个教程就不说为了方便你们什么的大话了,其实也就是为了加深本身的理解,也但愿和你们的交流中得到更大进步。好了,不说废话,如下进入正题~ 编辑器
首先什么是CitrusEngine?
Citrus引擎提供了一个快速原型游戏的架构,特别是ACT横版过关类的。内置实现了platform 包,支持角色 (Hero) 、道具盒子(Sensor) 、平台 (platform) 并扩展了 MovingFLatform是自运动的平台。 目前的版本同时封装了原生Starling渲染。对于物理引擎部分,同时支持 box2d、nape、AwayPhysics。此引擎基于MIT开源协议! ide
CitrusEngine有何特色? 函数
一、可视化的关口编辑器,它有一个强大的视觉化场景构建界面; flex
二、它支持Starling Framework等渲染引擎; 动画
三、它支持Box2D、Nape等物理引擎:翻滚箱子,滑轮,车,以及其余任何你能想到的东西,若是没有网格的限制的话; 网站
四、强健的文档,包含ASDoc API,教学视频,和友好的开发手册; spa
五、标准的API意味着开发者和设计人员能够将精力花在调整有趣的东西上,同时缩短了调试时间。 debug
核心构成 设计
(http://www.chenlinsheng.com/?p=406)
如何使用Crtues Engine
接下来咱们经过建立一个简单的demo来简单了解一下Crtues Engine的用法吧(此示例用的图片来自官网例子)
(http://www.chenlinsheng.com/?p=406)
1.使用Crtues Engine须要继承CitrusEngine类,若是想使用Starling,你必须继承StarlingCitrusEngine类。同时你须要调用setUpStarling函数来建立Starling环境,该函数有三个参数debugMode(调试模式),viewport 抗锯齿(默认为1)与anti-aliasing视图大小(默认是舞台大小)。
public class CitrusTest extends StarlingCitrusEngine
{
public function CitrusTest()
{
setUpStarling();//建立 Starling 视图
}
}
2.建立游戏状态
当咱们的主类设置完成后,咱们还须要设置游戏状态state。同一时间只能运行一个state。在游戏中能够设置每个关卡都是一个state,也能够把全部关卡设置同一个state。
这里,首先咱们新建一个类来继承StarlingState并将其设置成游戏的state
public class GameState extends StarlingState
{
public function GameState()
{
super();
}
public function CitrusTest()
{
setUpStarling();//建立 Starling 视图
state=new GameState();
}
3.接下来能够在GameState中重写initialize()方法来给游戏添加box2d环境(box2d开源物理引擎,咱们热心的拉登大叔给咱们写了很多优秀的教程,不了解的能够去他的网站看看:http://www.ladeng6666.com/blog/)和英雄,站台等元素。
override public function initialize():void{
super.initialize();
//建立一个box2D世界,须要第一个建立
var physics:Box2D=new Box2D(“box2d”);
// physics.visible=true;//若是设置为true,不一样的显示元素会以不一样的颜色块显示,颜色 块其实也反映了该元素/角色的发生碰撞的位置,范围
add(physics);
接下来添加hero、enemy、coin、Platform的等游戏元素,这些元素通常都具备两个参数,第一个是name,第二个为可选参数,Object类型,能够进行坐标等参数设置,如
//Platform新建一个站台做为地板,注意坐标x为512而非0,由于box2d是用显示对象的中心点做为注册点
var floor:Platform=new Platform(“floor”,{x:512,y:748,width:1024,height:40});
add(floor);
//MovingPlatform移动站台,speed设置速度,
var mp1:MovingPlatform=new MovingPlatform(“moviePl”,
{x:400,y:550,width:200,height:40,startX:400,startY:550,endX:500,endY:151});
// mp1.waitForPassenger=true;//waitForPassenger设置是否在有乘客时才移动
add(mp1);
//建立一个游戏角色,该角色能够用左右方向键行走,空格跳跃,默承认以向超级玛丽同样压死敌人
var hero:Hero=new Hero(“hero”,{x:50,y:650,width:80,height:48});
hero.view=new heroView();
add(hero);
//leftBound,rightBound设置活动范围
var enemy:Enemy=new Enemy(“enemy”,
{x:900,y:700,width:25,height:30,leftBound:10,rightBound:1000});
add(enemy);
//新建一个金币
var goal:Coin=new Coin(“ring”,{x:967,y:80,width:64,height:64});
//onBeginContact第一次被接触时候分派事件
goal.onBeginContact.add(function(c:b2Contact):void{
trace(“win”);
});
add(goal);
4.设置显示元素的view,能够理解为皮肤吧。view能够是一个类或者显示对象,图片等,在starling中也能够用Quad对其进行简单的填充
p1.view=new Quad(300,40,0×000000);
[Embed(source="assest/hero.png",mimeType="image/png")]
private var heroView:Class;
hero.view=new heroView();
此次大概就到这里吧,下次咱们探讨一下摄像头和flash动画的使用吧。
=》完整源码下载