載入外部swf資源套件編程是一個編寫as3.0非常不錯的美工與程式分離的方法。有很多人比較喜歡給Flash弄一個文檔類,然後ctrl+enter,我曾經也是這種人。討厭外部載入資源套件,直接一個swf就全部搞定。對於as3.0初碰,這也很正常,因為有很多中文版的書箱就是這麼教的。
如果你也已經把as3.0摸出感覺了,不如試試外部載入資源套件的方法。專門產生一個沒有程式,沒有文檔類的swf資源套件。然後在寫一個全是程式演算法,但是沒有圖形剪輯的swf去載入資源套件,再然後控制對象。Flex就是這種開發模式。
下面是方法:
1.在flash裡面製作一個剪輯,然後在庫裡面右鍵->屬性。為actionscript匯出,在幀1中匯出,寫一個類定義類名例如下代碼
package
{ import flash.display.MovieClip;
public class mc extends MovieClip{
public function mc():void{
}
}
}
2.匯出產生資源swf檔案,例如命名為test.swf;
3.在Flex或者FlashDevelop的主類中先載入資源檔,然後調用。例如下代碼:
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
public class Main extends Sprite {
public function Main():void
{
var url:String;
url="testMc.swf";
var req:URLRequest=new URLRequest(url);
var laoder:Loader = new Loader();
laoder.load(req);
laoder.contentLoaderInfo.addEventListener(Event.COMPLETE, comHander)
}
private function comHander(E:Event):void{
var target:MovieClip=E.target.content as MovieClip;
addChild(target);
target.x=0;
target.y = 0;
var tmc:mc = new mc();
addChild(tmc);
tmc.x = 200;
tmc.y = 200;
tmc.addEventListener(MouseEvent.CLICK,traceFun);
}
private function traceFun(E:MouseEvent):void{
trace(E.target);
}
}
}
4.ok了,調試一下。載入外部資源的控制跟直接放文檔類效果一模一樣。
-----------------------------------------------------------
如果你有項目已經開發住了一半,已經是用文檔類的方式了。其實換外部資源載入的方式也基本不影響。只要把你的fla檔案的文檔類去掉為空白,匯出資源swf,然後把文檔類的前部分加上載入代碼,如下:
var url:String;
url="testMc.swf";
var req:URLRequest=new URLRequest(url);
var laoder:Loader = new Loader();
laoder.load(req);
laoder.contentLoaderInfo.addEventListener(Event.COMPLETE, comHander);
載入完後的文檔類代碼基本不用變。嘿,真方法。adobe考慮的還蠻周到的。
當然如果你已經用載入外部資源的方法寫好了應用也可以換成文檔類使用,不過把資源載入的代碼刪了就可以了。
呼,好久沒玩Flash玩這麼多時間了,又寫完一篇,以後要多放點學習日記下行。最近迷上了FD,寫個測試附件也用了FD的項目編譯咯。