我正在尝试通过movieclip中的循环来获取getChildByName。
在库中我有一个名为PlayScreen的动画片段,在PlayScreen中,我有另一个名为Bg的动画片段。 PlayScreen由MainClass(类文档)放置在舞台上,PlayScreen链接到MainRun类。将Bg movieclip手动添加到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);
//...
}
}
任何建议?
答案 0 :(得分:1)
MovieClip对象的name属性必须是String值,但是你在那里放一个int。
尝试添加String(j)
;
最好使用你的flyClone
数组,而不仅仅是通过它的名字获取对象。
图像如果您向DisplayList(addChild)添加任何其他内容将会发生什么。
for(var j:int=0; j< flyClone.length; j++)
{
flyClone[j].addEventListener(...);
}
答案 1 :(得分:0)
for(var j:int=0; j< flyClone.length; j++)
{
(flyClone[j] as MovieClip).addEventListener(Event.ENTER_FRAME, randomMove);
}
答案 2 :(得分: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;
}
}