【问题标题】:Global Event Listener全局事件监听器
【发布时间】:2013-12-27 16:15:43
【问题描述】:

有什么方法可以让我的按钮工作,无论它在哪个场景或框架中。 有什么方法可以让我将该事件侦听器调用到该特定实例的另一个框架?

例如: 我有一个按钮home_btn,我希望这个按钮可以在所有场景中工作,而无需更改它的实例名称。我已经在第一个场景中添加了一个事件监听器,但它不起作用, 在另一个帧或场景中。 下面是代码。

home_btn.addEventListener(MouseEvent.CLICK, process_it);

function process_it(event:MouseEvent):void
{
    nextFrame();
}

我不知道如何为我的按钮使用调度事件功能。 // 这仅适用于该特定帧。

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    由于您在时间轴中执行此操作,如果您将home_btn.addEventListener(MouseEvent.CLICK, process_it);

    在主时间轴的第一帧,即使您更改为不同的帧,它也会被注册。

    您可以将函数保留在其现有框架中,因为它仍应被调用。

    与将代码放在不同帧上相比,这样做的原因是因为第 1 帧是您的时间线将开始并处理此帧期间所需的所有显示项目和代码的地方。也就是说,您希望激活的任何函数、变量或侦听器都将在应用程序启动时运行和/或存储到内存中,因为它将始终从第 1 帧开始,除非另有说明。如果您在不同的框架上有侦听器,那么您将必须 gotoAndStop() 到该框架以添加侦听器(否则您指定在您的应用程序位于该框架之前您不想添加侦听器)。向第 1 帧上的显示对象添加侦听器取决于显示对象也在该帧上。

    【讨论】:

    • 感谢您的回复。但是我还有一个问题,如果它不在第 1 帧上,那么它就不起作用。你能告诉我为什么吗?
    • 当然我会把它添加到我的答案中。如果这能解决您的问题,请将其标记为正确,以防其他人遇到同样的问题。
    • 如果在场景 1 的第 1 帧中定义了事件侦听器,则在另一个场景中具有相同实例名称的对象不起作用。
    • 是的,您的显示对象需要与事件声明存在于同一帧上。但是你说你想要在每一帧上都有它。如果您的按钮在第 1 帧上不存在,那么您需要将 home_btn.addEventListener(MouseEvent.CLICK, process_it); 放在它确实存在的帧上。我也在答案中添加了一个子句来说明这一点。
    • 这意味着,我必须为第一帧的不同场景定义具有不同实例名称的不同事件侦听器,才能使其正常工作。不是。
    猜你喜欢
    • 2010-10-30
    • 2021-10-17
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多