AS2 2個swf互動 (主swf載入外部swf)

70 views
Skip to first unread message

Sobek

unread,
Nov 25, 2009, 11:14:34 PM11/25/09
to 台灣 Adobe 使用者俱樂部
大大您們好


我想做一個
主swf可以跟載入外部的swf互動
外部的swf~有時會是組件~像按鈕,載入...等等
它們都有各自的class
例: a.swf a.as b.swf b.as

我在場景做_root.createEmptyMovieClip("loader_first",5);
用它來當載入外部的容器
使用loadMovie("b.swf",_root.loader_first);
也是ok

我在爬文時~有到一篇~類似的 但是as3
於是想引用這那一篇概念~
但做不出來
是用監聽~

var someObject:Object = new Object();
var myListener:Object = new Object();
myListener.someEvent = function(param1:Number, param2:String) {
trace("myListener received someEvent");
trace("param1: " + param1);
trace("param2: " + param2);
loadMovie("p04.swf",_root.listener_swf);
}

AsBroadcaster.initialize(someObject);
someObject.addListener(myListener);
someObject.broadcastMessage("someEvent", 3, "arbitrary string");

上面是引用的範例~
我似沒有法子~在b.swf廣播後~a,swf能聽到
還是說只能用全區域變數來解決呢?

謝謝

milkmidi

unread,
Nov 27, 2009, 4:23:53 AM11/27/09
to 台灣 Adobe 使用者俱樂部
在b.swf寫

_root.someObject.addListener(this);
(_root.someObject這個改成你的路徑)
function someEvent(param1:Number, param2:String) {


trace("myListener received someEvent");
trace("param1: " + param1);
trace("param2: " + param2);
}

Ben Chang

unread,
Nov 27, 2009, 8:36:30 PM11/27/09
to au...@googlegroups.com
你沒有說明 你使用的 broadcaster 程式是用在 a.asb.as
如果是用在 a.as,那麼 b.swf 想要聽到由 a.swf 送出的 someEvent 的話,
就照 奶綠 的做法

如果是用在 b.as,然後 a.swf 想要聽到由 b.swf 送出的 someEvent 的話,
就將 奶綠的範例程式放在 a.as,並將 _root.someObject 改成 _root.loader_first.someObject 即可




注意重點,broadcaster 物件放在哪裡?
想要監聽並做事的程式放在哪裡?

你提供的範例程式碼,可能需要拆一下,區分哪些部分是 事件送出者?哪些是 事件接收者?
當然一個 事件送出者 可以搭配多個 事件接收者,
所以 addListener() 可以寫在 a.as,也可寫在 b.as,也可兩個都寫,
只要注意 someObject 在哪裡就好




2009/11/26 Sobek <sobe...@gmail.com>
Reply all
Reply to author
Forward
0 new messages