我有两个swf,A.swf和B.swf: B.swf是A.swf的孩子。每个swf都有自己的DocumentClass。现在:我必须从A.swf向B.swf的DocumentClass传递4个数组。哪种可能是最好的方法?在B.swf中使用监听器是个好主意吗?我注意到有可能通过查询字符串发送数据,但如果可能的话,我想避免这种解决方案。
发布于 2011-07-22 22:05:43
我不建议开始走单身者的道路。迟早,你会后悔的。(http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/)
相反,应使子swf的基类实现一个接口,该接口具有您要在其上设置的值的变量。一旦加载程序分派了完整的事件,就将swf转换为该接口,并简单地将变量设置为正常。
在这里查看示例http://flexdiary.blogspot.com/2009/01/example-of-casting-contets-of-swfloader.html。这是一个Flex示例,但如果您单击缩略图,然后右键单击电影并选择“查看源代码”,您将看到源代码。实现Blusher接口的Flash电影的源代码位于flashSrc文件夹中。
HTH;
艾米
发布于 2011-07-22 20:32:17
EventListeners解决方案
您有一些在A.swf和B.swf中都使用的GlobalEventListener ( http://en.wikipedia.org/wiki/Singleton_pattern )。
您有一个customEvent,它扩展了Event并可以发送数组。
package com
{
import flash.events.Event;
public class TransferrArray extends Event
{
public static const TRANSFERRING:String = 'transferring';
private var _array:Array;
public function TransferrArray(type:String, array:Array, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
_array = array;
}
public function get array ():Array
{
return _array;
}
}}
在B.swf中的某个位置放入:
GlobalEventListener.addEventListener ( TransferrArray.TRANSFERRING, handleTransfer )
private function handleTransfer ( e : TransferrArray) : void
{
e.array // <- do what you need with it
}在A.swf中,当您的数组准备好传输时:
GlobalEventListener.dispatchEvent ( new TransferrArray ( TransferrArray.TRANSFERRING, [your,arrays,needed,for,b] );直接解析
B.swf需要有( B.swf的主类)一些:
public function transferrArrays ( array : Array )在A.swf中,加载B.swf并准备好传输阵列后:
BSWFLoader.content["transferrArrays"] ( [your,arrays,needed,for,b] );https://stackoverflow.com/questions/6788856
复制相似问题