【问题标题】:How do I create a global OnClick event in Flash AS2?如何在 Flash AS2 中创建全局 OnClick 事件?
【发布时间】:2010-02-26 04:30:44
【问题描述】:

我有一个由许多 SWF 文件组成的 Flash AS2 应用程序。我需要在容器 SWF 中创建一个 OnClick 事件,该事件适用于每个调用的 SWF。我试图避免向每个 SWF(超过 100 个)添加代码。

目前我可以访问第一个 SWF 的容器中的单击,但是当调用第二个 SWF 时,它似乎会覆盖容器。

this._lockroot = true;

this.onMouseUp = function(){
    //if not on login
    getURL("javascript:clickTest();");
};

//load swf
loadMovie("test.swf","_level2");

即使容器内的 SWF 调用另一个 SWF,我如何设置容器中的点击触发位置?

这看起来很简单,但却是一场噩梦。有没有可能?

【问题讨论】:

  • 是正在加载的剪辑中的代码,还是容器中的代码?只是为了澄清,你有一个容器,它加载任何> 100个其他剪辑,然后又加载其他剪辑?或者> 100个剪辑是否按顺序相互加载(在您的容器加载第一个之后)?
  • 原来没有容器。我只是添加它来保存上面的代码。容器中包含的 SWF 具有根据用户正在执行的操作加载其他 SWF 文件的链接。
  • 我认为一旦包含的 SWF 调用另一个 SWF,容器就会消失。我不知道如何通过调用其他 SWF 文件来保留容器。

标签: flash actionscript-2


【解决方案1】:

编辑(回复:cmets,onClipEvent 恶作剧不起作用)

尝试这样的事情怎么样:

this.createEmptyMovieClip("holder", this.getNextHighestDepth());
loadMovie("test.swf","holder");

代替:

//load swf
loadMovie("test.swf","_level2");

或者,如果应用程序的结构需要 _level2,则如下所示:

_level2.createEmptyMovieClip("holder", _level2.getNextHighestDepth());
_level2.holder.loadMovie("test.swf");

我刚刚尝试使用 2 级嵌套加载,它在顶层维护了点击处理程序(而使用没有持有人的 loadMovie 没有)。我不确定我所做的假设是否与嵌套 SWF 的结构相匹配,但这是我目前最好的猜测。

【讨论】:

  • 问题不在于代码无法处理点击事件,而是在嵌入的 swf 调用新的 swf 后点击事件持续存在的问题。
  • 加载的 SWF 用于加载其他 SWF 的代码是什么?
  • 他们也在使用 loadMovie。
【解决方案2】:

您可以将 movieClip 命名为例如clickHaver 在顶层(不惜一切代价) - 如果第二部电影(以及每部电影)将下一部电影加载到自身中:

- container
  - loads movie.swf
    - loads movie2.swf

那么您唯一需要关心的是在加载第一部电影后将clickHaver 保持在顶部,因为每个下一个都会加载另一个.swf 文件本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2021-04-10
    • 2010-09-08
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多