【发布时间】:2017-10-08 01:52:00
【问题描述】:
我创建了一个子对象并将其添加到一个影片剪辑中,但是当我在另一个函数中访问它的属性时,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;
}
}
【问题讨论】:
-
如果在这个循环中添加
trace(overlay_mc.getChildByName("target_" + i));会怎样?它找到对象了吗? -
好主意 3vilguy,我实际上在发布之前尝试过这个。奇怪的是,它可以毫无问题地跟踪对象本身,但是当我在行尾添加一个 .x (或任何其他属性)时,它会引发运行时错误......所以它似乎可以毫无问题地找到对象,只是无法访问其任何属性。
-
Weirdz 如果可行,如何将其转换为 DisplayObject 并检查它是否不为空。你确定 'npcObject' 不为空?
标签: actionscript-3 flash null addchild