>s我创建了一个子项并将其添加到影片剪辑中,但是当我在另一个函数中访问其属性时,Animate 会引发错误 #1009:无法访问空对象引用的属性或方法。
子项可以轻松添加和删除侦听器,并且可以使用 removeChild 从显示列表中删除,但显然没有与之关联的其他属性(x、y 等)。就好像子项已添加到显示列表中,但没有其他关联的属性?
子项被强制转换为影片剪辑,我尝试添加一个侦听器 (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;
}
}
不确定您的问题是什么,但您可能会考虑将影片剪辑保留在数组中,如果您经常调用此更新函数,实际上可能会提高性能。
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;
}
}