我有一个我从Libary加载的movieClip,我已正确链接它以名称myMC
导出。此movieclip包含另一个movieClip和一些属性。让我们在里面调用movieClip:insideMC
。
这是我的代码:
function loadScreen()
{
var newMC:MovieClip = new myMC();
addChild(newMC);
loadButtons();
}
function loadButtons()
{
newMC.insideMC.addEventListener(MouseEvent.CLICK, homeButtons);
}
loadScreen();
但是,当我在loadButtons()
函数中调用函数loadScreen()
时,我会收到此错误。
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at iRosary_fla::MainTimeline/loadButtons()[iRosary_fla.MainTimeline::frame1:83]
at iRosary_fla::MainTimeline/loadScreen()[iRosary_fla.MainTimeline::frame1:110]
at iRosary_fla::MainTimeline/frame1()[iRosary_fla.MainTimeline::frame1:103]
没有看到insideMC
。也许是因为它要求快速或未加载。它正在调用并加载newMC
tho。只是函数loadButtons()
无效,因为它没有看到insideMC
movieClip。我确信这是一个简单的修复,但我无法在任何地方找到它。感谢
答案 0 :(得分:1)
newMC
是loadScreen()
方法中的局部变量,因此它在loadButtons()
方法中没有范围。
将newMC
声明为类成员变量,它的范围为loadButtons()
例如:
// in class declarations
public var newMC:MovieClip;
function loadScreen()
{
newMC = new myMC();
addChild(newMC);
loadButtons();
}
了解这一点非常重要:
var newMC:MovieClip = new myMC();
创建局部变量。根据您的评论,听起来您确实将newMC
作为类变量。因此,您假设上面的行将新实例分配给您的类成员newMC
,而不是您创建的局部变量。
答案 1 :(得分:0)
不完全确定这是你的问题。但要访问影片剪辑中的影片剪辑,您必须在第一个影片剪辑中为“insideMC”提供实例名称。否则,您将引用尚未添加到舞台的对象 - 空对象。
实例名称教程here