首页 > 代码库 > ActionScript 3.0 加载外部SWF素材资源MovieClip,SimpleButton不支持鼠标事件
ActionScript 3.0 加载外部SWF素材资源MovieClip,SimpleButton不支持鼠标事件
我们用flash buidler加载素材一般有三种途径:
1、SWC,这种方式会增大SWF的大小
2、flash cs项目关联
3、SWF专门放素材资源通过Loader方式加载
今天发现通过SWF加载方式有个问题要加载的素材如下图:
A:是一个MC,里面放了一个B:mc,C:SimpleButton
问题:加载进A后对A添加鼠标事件如CLICK事件,单击B或C时没有反映?
开始我的加载方式是这样的:
目录结构如图:
代码如下:
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‘));
就可以了。
虽然解决了现在的问题但是还是没弄明白为什么,都能把素材加到舞台就是路径不一样而已却影响了鼠标事件。望大牛指点。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。