我创建了一个子节点并将其添加到movieclip中,但是当我在另一个函数中访问其属性时,Animate会抛出一个错误#1009:无法访问空对象引用的属性或方法。
孩子有一个听众添加和删除没有任何困难,可以使用removeChild从显示列表中删除,但显然没有其他属性(x,y等)。它好像孩子已被添加到显示列表中,但没有其他相关属性?
将子项转换为MovieClip,我尝试添加一个侦听器(ADDED_TO_STAGE)以确保子项在访问其属性之前作为显示对象在舞台上可用。但是,没有运气。
我的游戏中有相同代码的其他情况似乎工作正常。我不是专家,但我也不是ActionScript的新手,这个让我感到困惑......
创建子代码的代码:
function createNPCtargets():void
{
for ( var i:int=0 ; i<= npcs -1 ; i++ )
{
var NPCtarget:MovieClip = new target_mc;
overlay_mc.addChild(NPCtarget);
NPCtarget.name = "target_" + i;
NPCtarget.addEventListener(MouseEvent.CLICK, fireShot);
}
}
抛出错误的代码(npcObject很好):
function moveNPC():void
{
for (var i:int=0 ; i<= npcs -1; i++ )
{
overlay_mc.getChildByName("target_" + i).x = npcObject.x;
overlay_mc.getChildByName("target_" + i).y = npcObject.y;
}
}
答案 0 :(得分:0)
不确定您的问题是什么,但您可能会将Movieclip保留在数组中,如果您经常调用此更新函数,则实际上可能会更高效。
var npcs:Array = [];
function createNPCtargets():void
{
for ( var i:int=0 ; i<= npcs -1 ; i++ )
{
var NPCtarget:MovieClip = new target_mc;
overlay_mc.addChild(NPCtarget);
NPCtarget.addEventListener(MouseEvent.CLICK, fireShot);
npcs.push(NPCtarget);
}
}
function moveNPC():void
{
for (var i:int=0 ; i<= npcs.length ; i++ )
{
npcs[i].x = npcObject.x;
npcs[i].y = npcObject.y;
}
}