ActionScript 3.0 加載外部SWF素材資源MovieClip,SimpleButton不支持鼠標事件

咱們用flash buidler加載素材通常有三種途徑:app

一、SWC,這種方式會增大SWF的大小ui

二、flash cs項目關聯spa

三、SWF專門放素材資源經過Loader方式加載.net

今天發現經過SWF加載方式有個問題要加載的素材以下圖:code

  

A:是一個MC,裏面放了一個B:mc,C:SimpleButtonblog

問題:加載進A後對A添加鼠標事件如CLICK事件,單擊B或C時沒有反映?事件

開始個人加載方式是這樣的:ip

目錄結構如圖:資源

代碼以下:get

 1 package
 2 {
 3     import flash.display.DisplayObjectContainer;
 4     import flash.display.Loader;
 5     import flash.display.LoaderInfo;
 6     import flash.display.MovieClip;
 7     import flash.display.Sprite;
 8     import flash.events.Event;
 9     import flash.events.MouseEvent;
10     import flash.net.URLRequest;
11     import flash.system.ApplicationDomain;
12 
13     [SWF(width = '1024',height = '768')]
14     public class TestExam extends Sprite
15     {
16         private var cache:Object = {};
17         private var mcName:String = "StartBar";
18         public function TestExam()
19         {
20             
21             init();
22         }
23         
24         private function init():void{
25             var loader:Loader = new Loader();
26             loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComp);
27             loader.load(new URLRequest('../libs/Material.swf'));//注意這個路徑
28         }
29         
30         private function onComp(e:Event):void{
31             trace(e.currentTarget,e.target);
32             var loaderInfo:LoaderInfo = e.currentTarget as LoaderInfo;
33             var appDomain:ApplicationDomain = loaderInfo.applicationDomain;
34             cache[mcName] = appDomain.getDefinition(mcName) as Class;
35             
36             var clz:Class = getDef(mcName);
37             addMovie( new clz() as MovieClip );
38         }
39         
40         private function getDef(name:String):Class
41         {
42             if( cache[name] )
43             {
44                 return cache[name] as Class;
45             }
46             return null;
47         } 
48         
49         private function addMovie(mc:MovieClip):void
50         {
51             addChild(mc);
52         }
53         
54         private function onRightClick(evt:MouseEvent):void{
55             trace(evt.target,evt.currentTarget);
56         }
57     }
58 }

可是就出現了個人問題。

解決方式:修改路徑

上方代碼路徑改成

loader.load(new URLRequest('Material.swf'));就能夠了。雖然解決了如今的問題可是仍是沒弄明白爲何,都能把素材加到舞臺就是路徑不同而已卻影響了鼠標事件。望大牛指點。
相關文章
相關標籤/搜索