• 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'));
    就可以了。
    虽然解决了现在的问题但是还是没弄明白为什么,都能把素材加到舞台就是路径不一样而已却影响了鼠标事件。望大牛指点。
  • 相关阅读:
    常用数列
    sqrt
    树状数组
    hash
    P1102 A-B数对
    codevs 1795 金字塔 2
    P2296 寻找道路
    [USACO16JAN]子共七Subsequences Summing to Sevens
    P3397 地毯
    关于调用&&传址
  • 原文地址:https://www.cnblogs.com/ztdy/p/3716873.html
Copyright © 2020-2023  润新知