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了!