一个工具类(可以控制多层嵌套的movieClip)

来源:互联网 发布:造作啊是网络什么意思 编辑:程序博客网 时间:2024/05/22 17:48
好多人也应该遇到和我一样的问题,当设计师给了我们一个多层嵌套的movieClip时,我们在写代码时无法将movieClip完全停止掉,主要是基于好多movieClip有深层嵌套,主时间轴不在最上层导致的,所以基于这个原因写了下面的类。

看代码:(有很详细的注释)
  1. package com.sina.utils 
  2. {
  3.        import flash.display.MovieClip;
  4.        
  5.       
  6.        public class MovieClipManage 
  7.        {
  8.               private var_target:MovieClip;
  9.               private var_type:String;
  10.               
  11.              
  12.               public functionMovieClipManage(mc:MovieClip = null) 
  13.               {
  14.                      _target =mc;
  15.               }
  16.               
  17.               private functiongoto(mc:MovieClip, frame:int = 0):void
  18.               {
  19.                      if(!(mc isMovieClip))
  20.                     {
  21.                            throw new Error("MovieClipManage:::目标不是movieClip");
  22.                            return;
  23.                     }
  24.                      frame >0 ?  mc[_type](frame):  mc[_type]();
  25.                      
  26.                      if(mc.numChildren > 0)
  27.                     {
  28.                            for (var i:int = 0; i < mc.numChildren; i++) 
  29.                        {
  30.                                   if (mc.getChildAt(i) asMovieClip)
  31.                                   {
  32.                                         goto(mc.getChildAt(i) as MovieClip, frame);
  33.                                   }
  34.                            }
  35.                     } 
  36.                      
  37.               }
  38.               
  39.              //--------------------API---------------------------------
  40.              
  41.               public functionpause(target:MovieClip = null):void
  42.               {
  43.                      _type ="stop";
  44.                      target =target || _target;
  45.                     goto(target);
  46.               }
  47.               
  48.              
  49.               public functionplay(target:MovieClip = null):void
  50.               {
  51.                      _type ="play";
  52.                      target =target || _target;
  53.                     goto(target);
  54.               }
  55.               
  56.              
  57.               public functionstop(target:MovieClip = null):void
  58.               {
  59.                      _type ="gotoAndStop";
  60.                      target =target || _target;
  61.                     goto(target, 1);
  62.               }
  63.               
  64.              
  65.               public functionreplay(target:MovieClip = null):void
  66.               {
  67.                      _type ="gotoAndPlay";
  68.                      target =target || _target;
  69.                     goto(target, 1);
  70.               }
  71.        }
  72.        
  73. }
复制代码
//---------------------------------------------------------------------

实现原理:主要用到了递归的原理来循环找到底层的movieClip原件,然后执行相应的操作来达到将所有嵌套的原件暂停,重播等功能。
原文地址:http://www.99ria.com/blog/?p=230
0 0
原创粉丝点击