0

我有一个从库加载的电影剪辑,并且我已正确链接它以导出名称为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. 也许是因为它正在调用快速或尚未加载。它正在调用并加载newMCtho。只是该功能loadButtons()不起作用,因为它没有看到insideMC电影剪辑。我确信这是一个简单的解决方法,但我无法在任何地方找到它。谢谢

4

2 回答 2

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,而不是您创建的局部变量。

于 2013-04-29T22:19:09.663 回答
0

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

关于实例名称的教程在这里

于 2013-04-29T22:18:22.337 回答