As3从库中添加MC并访问加载的MC内的内容

时间:2013-04-29 22:14:22

标签: actionscript-3 flash loading flash-cs6

我有一个我从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。我确信这是一个简单的修复,但我无法在任何地方找到它。感谢

2 个答案:

答案 0 :(得分:1)

newMCloadScreen()方法中的局部变量,因此它在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