【问题标题】:AS3 Add event listener to a movieclip within a movieclipAS3 将事件侦听器添加到影片剪辑中的影片剪辑
【发布时间】:2013-07-01 23:29:21
【问题描述】:

我目前有两个影片剪辑,一个名为 mcInvFrame,一个名为 btnCloseInv(这是一个影片剪辑,我知道命名约定是错误的)。 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 中创建一个变量,我可以从主文档中访问该按钮吗?如果有怎么办?

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

【问题讨论】:

  • 您确定在 btnCloseInv 上放置了实例名称吗?如果你有,我认为你的代码应该可以工作。
  • 好吧,我已经找到了合适的工作,但这不是我所希望的。在 Inventory.as 我添加了一个关闭按钮的实例并将其放置在我想要的位置时,我能够让按钮工作。我想访问 mcInvFrame 影片剪辑中的按钮以工作,但我似乎无法弄清楚如何在另一个影片剪辑中创建影片剪辑的实例。

标签: actionscript-3 movieclip


【解决方案1】:

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

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

如果您不想使用此代码,AS3 - Button inside MovieClip triggers MC's event

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

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2012-04-13
    • 2013-12-22
    相关资源
    最近更新 更多