Flash PBEngine 使用MovieClip的swc格式

    這篇文章針對的PBE 的版本爲Mon Nov 07 23:18:44 -0800 2011  發佈的1.0版本。使用Flashdevelop 4.0作爲IDE,使用當前最新的Flex SDK4.5.1
    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了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章