Actionscript 3 实例名称不工作

Actionscript 3 实例名称不工作,actionscript-3,flash-cs4,Actionscript 3,Flash Cs4,我的代码如下所示 var newFrame:MovieClip = new MovieClip(); newFrame.graphics.lineStyle(lineWidth, xmlData.config.frame.@color); newFrame.graphics.beginFill(0x000000, 0); newFrame.graphics.drawRect(0, 0, stage.stageWidth+2, stage.stageHeight+2); newFrame.grap

我的代码如下所示

var newFrame:MovieClip = new MovieClip();
newFrame.graphics.lineStyle(lineWidth, xmlData.config.frame.@color);
newFrame.graphics.beginFill(0x000000, 0);
newFrame.graphics.drawRect(0, 0, stage.stageWidth+2, stage.stageHeight+2);
newFrame.graphics.endFill();
newFrame.name = "movieFrame";
addChild(newFrame);
到目前为止一切正常,但后来

addChildAt(textClip,3);
addChildAt(thumbClip,4);
addChildAt(menu,5);
addChildAt(movieFrame,6);

最后一行给出一条错误消息:1120:Access of undefined property movieFrame

这个小错误意味着在使用
new
操作符调用时,您没有正确创建
类的
实例

var movieFrame:MovieClip = new MovieClip();
addChildAt(movieFrame, 6);

编辑

作为
addChild
addChildAt
方法的
name
第一个参数的实例的适当性会引发错误消息

var newFrame:MovieClip = new MovieClip();
newFrame.name = "movieFrame";
addChild(movieFrame);
编译器错误:

1120:访问未定义的属性movieFrame


好的,这就是我为了让事情顺利进行所做的。我在主时间线中添加了空movieclip,并给实例命名为“movieFrame”。现在,代码几乎与原来发布的代码相同

var newFrame:MovieClip = new MovieClip();
newFrame.graphics.lineStyle(lineWidth, xmlData.config.frame.@color);
newFrame.graphics.beginFill(0x000000, 0);
newFrame.graphics.drawRect(0, 0, stage.stageWidth+2, stage.stageHeight+2);
newFrame.graphics.endFill();
movieFrame.addChild(newFrame);

现在所有addChildAt命令都正常工作了。谢谢你帮我再次登上正确的轨道

听起来你有一个范围界定的问题,因为它看起来你已经实例化了你的movieclip刚刚好。为什么要执行
addChild
addChildAt
?您应该只需要其中一个,除非您要从舞台上移除名为
movieFrame
的movieclip,并且没有在代码中显示它。另外,第二个代码块存在于哪里?根据代码所在的位置,它将确定您是否确实存在范围问题。行
newFrame.name=“movieFrame”
设置movieclip的实例名称。奇怪的是,有两种“addChild”类型的调用正在进行,这让我相信他试图从代码中的两个不同位置访问同一个movieclip,这可能是一个范围问题。@Sly Raskal我不知道
addChild
addChildAt
方法的第一个参数可能是实例的适当性
name
。我故意使用addChild和addChildAt,因为显示列表在某些事件后被重新组织。@Sterna实例作为
addChildAt
方法的
第一个参数会引发错误消息。我不这么认为,因为所有其他addChildAt命令也使用实例的名称作为第一个参数。唯一不同的是,其他电影剪辑位于主时间线中:
var newFrame:MovieClip = new MovieClip();
newFrame.graphics.lineStyle(lineWidth, xmlData.config.frame.@color);
newFrame.graphics.beginFill(0x000000, 0);
newFrame.graphics.drawRect(0, 0, stage.stageWidth+2, stage.stageHeight+2);
newFrame.graphics.endFill();
movieFrame.addChild(newFrame);