0

我正在尝试在movieclip 中循环获取getChildByName 工作。

在库中,我有一个名为 PlayScreen 的影片剪辑,在 PlayScreen 内,我有另一个名为 Bg 的影片剪辑。PlayScreen 由 MainClass(类文件)上台,PlayScreen 链接到 MainRun 类。Bg 影片剪辑通过从库中拖入手动添加到 PlayScreen。

这是我的 MainRun 课程。

public class MainRun extends MovieClip
    {
        public var flyClone:Array;
        public var newFly:Fly_MC;
        public var spX:Number = 550;
        public var spY:Number = 400;

        public function MainRun() 
        {
            flyClone = new Array(); 
            for(var i:int=0; i<10; i++)
            {   
                newFly = new Fly_MC(Math.random()* spX, Math.random()* spY);
                flyClone.push(newFly);
                addChild(newFly);
                newFly.name = "fly_" + i;
            }
            //...

            bla();
        } 

在这里我无法使 getChildByName 正常工作,它返回;错误 #1009:无法访问空对象引用的属性或方法。在 MainRun/bla()

        public function bla():void
        {
            for(var j:int=0; j< numChildren; j++)
            {
               getChildByName("fly_" + j).addEventListener(Event.ENTER_FRAME, randomMove);
               //...
            }
        }

有什么建议吗?

4

3 回答 3

1

您的 MovieClip 对象的 name 属性必须是一个字符串值,但您将一个 int 放在那里。尝试添加String(j)

最好使用您的flyClone数组,而不是仅通过名称获取对象。想象一下如果向 DisplayList (addChild) 添加任何其他内容会发生什么。

for(var j:int=0; j< flyClone.length; j++)
{
   flyClone[j].addEventListener(...);
}
于 2013-05-07T13:44:16.230 回答
0
for(var j:int=0; j< flyClone.length; j++)
{

   (flyClone[j] as MovieClip).addEventListener(Event.ENTER_FRAME, randomMove);
}
于 2013-05-07T14:02:29.863 回答
0

我几乎肯定你有一个不是苍蝇的孩子。

public function bla():void
{
    for(var j:int=0; j< numChildren; j++)
    {
       var fly : Fly_MC =  getChildByName("fly_" + j) as Fly_MC;
       if( fly )
       {
          fly.addEventListener(Event.ENTER_FRAME, randomMove);
       }
    }
}

你为什么不只是:

for each( var fly : Fly_MC in flyClone )
{
   fly.addEventListener(Event.ENTER_FRAME, randomMove);
}

或更好

addEventListener(Event.ENTER_FRAME, randomMoveFlies);

public function randomMoveFlies( e:Event ):void
{
   for each( var fly : Fly_MC in flyClone )
   {
   //move flies;
   }
}
于 2013-05-07T14:16:53.707 回答