如何在Flash AS2中创建全局OnClick事件?

时间:2010-02-25 15:22:17

标签: flash actionscript-2

我有一个由许多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,如何触发容器中的点击?

这看起来很简单但却是一场噩梦。它甚至可能吗?

2 个答案:

答案 0 :(得分:1)

编辑(re:评论,onClipEvent shenanigans无效)

尝试这样的事情怎么样:

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 w / o持有者没有)。我不确定我做出的假设是否与嵌套SWF的结构相匹配,但这是我最好的猜测。

答案 1 :(得分:0)

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

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

那么你唯一关心的是在加载第一部电影后将clickHaver置于最前面,因为每一部电影本身都会加载另一个.swf文件。