Actionscript 3 AS3将事件侦听器添加到movieclip中的movieclip

Actionscript 3 AS3将事件侦听器添加到movieclip中的movieclip,actionscript-3,movieclip,Actionscript 3,Movieclip,我目前有两个movieclip,一个叫做mcInvFrame,另一个叫做btnCloseInv(这是一个movieclip,我知道命名约定是错误的)。btnCloseInv位于mcInvFrame内部。我有两个文件Inventory.as和我的主文档类。我可以将mcInvFrame加载到舞台上,一切正常。但是,当我尝试访问btnCloseInv movieclip时,会出现错误。这是清单的代码。我已经注释掉了我最近失败的尝试 package{ import flash.display.Movie

我目前有两个movieclip,一个叫做mcInvFrame,另一个叫做btnCloseInv(这是一个movieclip,我知道命名约定是错误的)。btnCloseInv位于mcInvFrame内部。我有两个文件Inventory.as和我的主文档类。我可以将mcInvFrame加载到舞台上,一切正常。但是,当我尝试访问btnCloseInv movieclip时,会出现错误。这是清单的代码。我已经注释掉了我最近失败的尝试

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中创建一个变量。至于我可以从主文档访问的按钮?如果是,怎么做


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

您无法在stage.movieclip.movieclip2上注册事件,我以前也尝试过同样的操作,但它不起作用,请尝试在外部创建btnCloseInv,然后使用这个代码

btnCloseInv.x = mcInvFrame.x + numberHere;
btnCloseInv.y = mcInvFrame.y + numberHere2;
如果您不想使用此代码


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

您是否确实在btnCloseInv上放置了实例名称?如果你有,我认为你的代码应该可以工作。我已经找到了合适的工作,但这不是我所希望的。在Inventory中,当我添加了close按钮的一个实例并将其放置在我想要的位置时,我就能够让按钮工作了。我想访问mcInvFrame movieclip中的按钮来工作,但我似乎不知道如何在另一个movieclip中创建一个movieclip实例。