2013-04-29 77 views
0

我有一个movieclip我从Libary加载,并且我已正确连接它以导出名称为myMC。这个movieclip包含另一个movieClip和一些属性。让我们打电话给里面的movieClip:insideMCAs3从Libary添加MC并访问加载的内容MC

这里是我的代码:

function loadScreen() 
{ 
    var newMC:MovieClip = new myMC(); 
    addChild(newMC); 
    loadButtons(); 
} 

function loadButtons() 
{ 
    newMC.insideMC.addEventListener(MouseEvent.CLICK, homeButtons); 
} 

loadScreen(); 

然而,当我打电话loadScreen()函数中的函数loadButtons()然后我得到这个错误。

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寿。只是功能loadButtons()不工作,因为它没有看到insideMC movieClip。我相信这是一个简单的解决方案,但我无法在任何地方找到它。谢谢

回答

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,而不是你创建的本地变量。

+0

我实际上只使用Flash为我创建的类。所以我将这段代码发布在我的actionscirpt的顶部:var newMC:MovieClip;我仍然收到错误。我可以进入lib并单击属性,然后向正在加载的myMC类添加一些东西,如果这就是你的意思。 – 2013-04-29 22:31:36

+0

你说得对。我在函数中有这样一行:var newMC:MovieClip = new myMC();这是一个新的变种,而不是称之为旧的变种。非常感谢! – 2013-04-29 22:39:48

0

不完全确定这是你的问题。但要访问影片剪辑中的影片剪辑,您必须在第一个影片剪辑中为“insideMC”指定一个实例名称。否则,你会引用一个没有添加到舞台的对象 - 一个空对象。在实例名称here

+0

它在影片剪辑中有一个实例名称,当它从开始的舞台上它工作正常,但是当我试图动态加载它时,它没有。我是否也必须给它一个动态实例名称?它已经有一个硬编码内部,我打电话给它。 – 2013-04-29 22:20:37

相关问题