宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS3]直接获取在那一桢的非Shape显示对象

2016-10-13 00:16:48 点击量:11 标签: 收藏本文

如果一个MovieClip goto到非当前帧,那么直接获取在那一桢的非Shape显示对象是获取不到的,
但是currentFrame会立即跟进到 指定帧, 但指定帧还未渲染完成, 所以非Shape获取不到的
Shape元件简单很快就渲染完成了, SimpleButton, MovieClip 却需要更多的时间
废话不多说了,上代码, 注释比较详细

  1. 代码 
  2.  
  3. Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->package   
  4.     import flash.display.DisplayObject; 
  5.     import flash.display.DisplayObjectContainer; 
  6.     import flash.display.Loader; 
  7.     import flash.display.MovieClip; 
  8.     import flash.display.Sprite; 
  9.     import flash.events.Event; 
  10.     import flash.net.URLRequest; 
  11.   
  12.     /** 
  13.      * ... 
  14.      * @author lite3 
  15.      */ 
  16.     public class MCgetChildTest extends Sprite 
  17.     { 
  18.         private const url:String = "http://www.lite3.cn/assets/swf/mc_getchild_test.swf"
  19.         private var loader:Loader = new Loader(); 
  20.         public function MCgetChildTest()  
  21.         { 
  22.             loader.load(new URLRequest(url)); 
  23.             loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler) 
  24.         } 
  25.   
  26.         private function completeHandler(e:Event):void  
  27.         { 
  28.             loader.removeEventListener(Event.COMPLETE, completeHandler); 
  29.   
  30.             trace("------------- 主时间轴 -----------------"); 
  31.             // 获取当前时间轴里mc是子对象 
  32.             var mc:MovieClip = (loader.content as DisplayObjectContainer).getChildAt(0) as MovieClip; 
  33.             trace("第一个显示对象:", mc); 
  34.   
  35.             trace("跳转到第3帧!"); 
  36.             mc.gotoAndStop(3); 
  37.             // 如果是MovieClip就是null, shape就有shape实例 
  38.             trace("马上测试子对象个数:", mc.numChildren, ",第1个显示对象:", mc.getChildAt(0));// 1  null 
  39.   
  40.             trace("添加EnterFrame侦听!") 
  41.             // 这里要添加enterFrame侦听, 否 
  42.             mc.addEventListener(Event.ENTER_FRAME, enterFrameHandler); 
  43.   
  44.         } 
  45.   
  46.         private function enterFrameHandler(e:Event):void  
  47.         { 
  48.             var mc:MovieClip = e.target as MovieClip; 
  49.             //mc.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); 
  50.             // 刚load进来的,第一次也是null 
  51.             // 不是刚load进来的第一次就可以取到了 
  52.             trace("子对象个数:", mc.numChildren, "/第一个子对象:", mc.getChildAt(0)); 
  53.             trace(mc.numChildren, mc.getChildAt(0)); 
  54.         } 
  55.     } 

 

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室