臉書無名算什麼?! 加入有明大戰才有更美好的明天!
友民們~ 讓我們一起來大亂鬥吧!
01 package {
02 import flash.display.Loader;
03 import flash.display.MovieClip;
04 import flash.display.Stage;
05 import flash.display.StageAlign;
06 import flash.display.StageScaleMode;
07 import flash.events.Event;
08 import flash.events.MouseEvent;
09 import flash.net.URLLoader;
10 import flash.net.URLLoaderDataFormat;
11 import flash.net.URLRequest;
12 import flash.utils.ByteArray;
13
14 /**
15 * ...
16 * @author Focus1921
17 *
18 * 複製無綁定類別movie clip場景實體(stage instance)實作demo(fla文件類別)
19 */
20 public class DocTest extends MovieClip {
21 //stage instance
22 public var test_box_mc:MovieClip; //場景上僅有的movie clip, 實體名稱test_box_mc23
24 private var ba:ByteArray; //儲存自己這個swf的byte array
25 private var ldr:Loader; //建一個loader來load ba
26 private var tmpX:Number;
27 private var tmpY:Number;
28
29 /**
30 * 建構式
31 */
32 public function DocTest() {
33 if (stage) {
34 init();
35 }else {
36 addEventListener(Event.ADDED_TO_STAGE, init);
37 }
38 }
39
40 private function init(e:Event = null):void {
41 stage.scaleMode = StageScaleMode.NO_SCALE;
42 stage.align = StageAlign.TOP_LEFT;
43
44 //確保主場景load只load自己一次,避免溢位
45 if (parent is Stage) {
46 trace("parent is Stage");
47 //建構url loader(binary)去load自己的byte array
48 var _urlLoader:URLLoader = new URLLoader();
49 _urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
50 //trace(root.loaderInfo.url);
51 _urlLoader.load(new URLRequest(root.loaderInfo.url));
52 _urlLoader.addEventListener(Event.COMPLETE, onURLLdrComplete);
53 }
54
55 //建構loader, 註冊complete完成偵聽
56 ldr = new Loader();
57 ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLdrComplete);
58
59 //stage註冊click偵聽
60 stage.addEventListener(MouseEvent.CLICK, onStageClick);
61 }
62
63 //---Event Handler-----------------------------------------------------------------------------
64
65 private function onURLLdrComplete(e:Event):void {
66 e.currentTarget.removeEventListener(Event.COMPLETE, onURLLdrComplete);
67 //把load到的byte array存起來
68 ba = e.currentTarget.data;
69 }
70
71 private function onLdrComplete(e:Event):void {
72 //用實體名稱去抓到要複製的movie clip,每次load完都會傳不同的引用
73 var _mc:MovieClip = MovieClip(ldr.content).getChildByName("test_box_mc") as MovieClip;
74 //屬性設定不同的值,證明的確不是同一個引用
75 _mc.x = tmpX;
76 _mc.y = tmpY;
77 _mc.alpha = Math.random();
78 //加入顯示清單
79 addChild(_mc);
80 }
81
82 private function onStageClick(e:MouseEvent):void {
83 //把點擊座標存起來,當作複製後的mc的座標
84 tmpX = e.stageX;
85 tmpY = e.stageY;
86 //loader去load(loadBytes)存起來的byte array(ba)
87 ldr.loadBytes(ba);
88 }
89
90 }
91
92 }
標籤:actionscript3, as3, demo, test
意見
您必須是成員才能發表評論!
加入 iYouMe 有明大戰