0

我目前有两个movieclip,一个叫mcInvFrame,一个叫btnCloseInv(它是一个movieclip,我知道命名约定是错误的)。btnCloseInv 位于 mcInvFrame 内。我有两个文件 Inventory.as 和我的主文档类。我可以将 mcInvFrame 加载到舞台上,一切都按预期工作。但是,当我尝试访问 btnCloseInv 电影剪辑时,我得到了错误。这是 Inventory 的代码。因为我已经注释掉了我最近失败的尝试

package{
import flash.display.MovieClip;
import flash.events.MouseEvent;


public class Inventory extends MovieClip
{
    public var inv:MovieClip = new mcInvFrame;

    public function Inventory()
    {
        addChild(inv);
        /*var invClose:MovieClip = inv.btnCloseInv;
        invClose.addEventListener(MouseEvent.CLICK, CloseInventory);
        function CloseInventory($e:MouseEvent):void
        {
            this.parent.removeChild(inv);
        }*/
    }
}

}

我需要知道的是我可以/应该在inventory.as中创建一个变量吗?我可以从主文档访问的按钮?如果有怎么办?

PS 我一直在搜索论坛并尝试各种解决方案,但我要么不了解实现,要么它们不适合这种情况。我收到的最常见错误是“错误 #1009:无法访问空对象引用的属性或方法”。有时我会收到一条错误消息,指出对象没有属性。

4

1 回答 1

0

你不能在 stage.movi​​eclip.movi​​eclip2 上注册事件,我之前尝试过做同样的事情,但它不会工作,尝试在外面创建 btnCloseInv,然后使用这个代码

btnCloseInv.x = mcInvFrame.x + numberHere;
btnCloseInv.y = mcInvFrame.y + numberHere2;

如果您不想使用此代码,AS3 - MovieClip 中的按钮会触发 MC 的事件

编辑:如果你设置mcInvFrame.buttonMode = true它将不起作用

于 2013-07-18T09:34:52.467 回答