2.0粗略的看了一眼,写得很薄。2.0应该是针对游戏框架的设计,呵呵,2.0 Demo的第一句话“PushButton Engine is an industrial strength open source Flash game framework.”挺敢说的,工业强度。。。
目的很明确,就是用PBE显示一个MovieClip,这个MovieClip是导出为 swc格式的。这种方式很适合开发,由Flash美术人员制作*.fla后导出成swc,这样就可以不用再跟程序人员费尽口舌的说明某某在XX座标,某某在XX座标,层级关系是这样的(此处省略XX字)。人员配合几次形成默契后连文档都省了。
不用PBE其实这是很容易做到的,
this.addChild(new swcClass());
但变为PBE的一个Component就稍微复杂了些,没办法为了组织起一个庞大的游戏逻辑,肯定是会复杂的。
准备工作:1个动画原件导出成swc(这个美术人员都会,这里要注意的也就是动画的原点),PBE的源码(我喜欢编译源码到工程里,而不喜欢PBE的swc,往上查看或修改代码比较方便),建一个AS3工程(其实就用 解压引擎的目录\development\FlashDevelop\PBEngine 的这个Hello,在里面增加代码就挺好)
package
{
import com.pblabs.engine.debug.Logger;
import com.pblabs.engine.entity.IEntity;
import com.pblabs.engine.PBE;
import com.pblabs.rendering2D.MovieClipRenderer;
import com.pblabs.rendering2D.ui.SceneView;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.geom.Point;
/**
* ...
* @author Simon
*/
public class Hello extends Sprite
{
public function Hello()
{
// 它初始化
PBE.startup(this);
Logger.print(this, "Hello, World!");
// 以上是原来例子提供的
// swc的资源,就是一个MovieClip
var et:et_1 = new et_1();
// 初始化PBE场景
var sceneview:SceneView = new SceneView();
// 场景宽
sceneview.width = 800;
// 场景高
sceneview.height = 600;
// 起个名字
sceneview.name = "MainView";
PBE.initializeScene(sceneview);
// 显示这个MovieClip
ShowMC(et);
}
private function ShowMC(mc:MovieClip):void
{
// PBE的所有对象都是IEntity
var obj:IEntity = PBE.allocateEntity();
// 这个MovieClipRenderer 半年前还不好用,这个版本修改了一些代码
var fxrender:MovieClipRenderer = new MovieClipRenderer();
// 直接把这个MovieClip赋值了
fxrender.clip = mc;
// 开启无限循环播放,否则播放1遍后就停止了
fxrender.loop = true;
// 指定个位置,这里是可以插入运动功能Component的,这里就不插入了
fxrender.position = new Point(0, 0);
// 指定显示场景
fxrender.scene = PBE.scene;
// 把这个render添加到这个对象 - PBE的基本规则也算是灵魂规则吧
obj.addComponent(fxrender, "fxRender");
obj.initialize();
}
}
}
OK了!