2010-02-25 89 views
0

我有一個由許多SWF文件組成的Flash AS2應用程序。我需要在一個容器SWF中創建一個OnClick事件,它將適用於每個調用的SWF。我試圖避免向每個SWF添加代碼(超過100)。如何在Flash AS2中創建全局OnClick事件?

目前我可以訪問第一個SWF的容器中的點擊,但是當第二個SWF被調用時它似乎覆蓋了容器。

this._lockroot = true; 

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

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

即使容器內的SWF調用另一個SWF,如何使容器中的點擊觸發?

這似乎很簡單,但一直是一場噩夢。它甚至有可能嗎?

+0

是否正在加載剪輯中的代碼或容器中的代碼?爲了澄清,你有一個容器,它加載了大於100個其他剪輯,然後再加載其他剪輯?或者是否> 100個剪輯按順序相互裝載(在第一個被您的容器加載之後)? – datageist 2010-02-25 16:07:57

+0

原來沒有容器。我只是添加它來保存上面的代碼。包含在容器中的SWF具有根據用戶正在做什麼加載其他SWF文件的鏈接。 – 2010-02-25 16:13:20

+0

我想一旦包含的SWF調用另一個SWF,容器就會消失。我不知道如何通過調用其他SWF文件來保留容器。 – 2010-02-25 16:14:52

回答

1

編輯(RE:評論,有心計的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結構相匹配,但這是我在這一點上的最佳猜測。

+0

問題不在於代碼無法與click事件一起工作,而是嵌入的swf調用新swf後,單擊事件仍然存在的問題。 – 2010-02-25 18:03:14

+0

這不是一個影片剪輯 - 因此onClipEvent不起作用。 – 2010-02-25 18:41:00

+0

加載的SWF正在用來加載其他SWF的代碼是什麼? – datageist 2010-02-25 19:53:47

0

您可以將movieClip命名爲例如clickHaver上(不惜一切代價)頂層 - 如果第二部電影(和每個下)加載下一部電影到自身:

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

那麼你唯一關心的是保持clickHaver頂部裝載的第一部電影之後,因爲每個下一個加載另一個.swf文件本身。