swf之间的交互(上)全局变量VS全局派发事件

1全局变量:

通过定义一个全局的类里面定义静态变量用来存储swf1中要传给swf2的参数值,swf2通过读取静态变量中的值来获取swf1中传过来的值。。。。。。。这个很好理解就不多说了。

2全局派发(以一个demo来说明)

----自定义一个事件(注意继承自Event)给他一个私有变量用来存储传递的参数(当然根据情况可以多个)

复制代码
package event {
import flash.events.Event;
publicclass MessageEvent extends Event {
private var msg:String;
public function MessageEvent(
msg:String,
type:String,
bubbles:Boolean=false,
cancelable:Boolean=false) {
super(type, bubbles, cancelable);
this.msg=msg; }
public function getmessage():String { return msg; } } }
复制代码

....创建一个全局派发类继承自EventDispatcher(使用单例模式提高效率,便于管理)

复制代码
package event { import flash.events.EventDispatcher; import flash.events.IEventDispatcher; publicclass MessageDispatch extends EventDispatcher { privatestatic var instance:MessageDispatch; public function MessageDispatch(target:IEventDispatcher=null) { super(target); } publicstatic function getInstance():MessageDispatch { if(instance==null) { instance=new MessageDispatch(); } return instance; } public var msg:String } }
复制代码

...实现

swf1:left.swf

复制代码
<?xml version="1.0" encoding="utf-8"?><s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" height="300" width="300"><s:layout><s:BasicLayout/></s:layout>
<fx:Script><![CDATA[ import event.MessageDispatch; import event.MessageEvent; protected function button1_clickHandler(event:MouseEvent):void { MessageDispatch.getInstance().dispatchEvent(new MessageEvent(t.text,"sent")); MessageDispatch.getInstance().msg=t.text; } ]]></fx:Script>
<fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><s:TextArea x="10" y="10" width="277" height="218" id="t"/><s:Button x="218" y="236" label="按钮" click="button1_clickHandler(event)"/></s:Panel>
复制代码

swf2:right.swf

复制代码
<?xml version="1.0" encoding="utf-8"?><s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="panel1_creationCompleteHandler(event)" height="300" width="300"><s:layout><s:BasicLayout/></s:layout><fx:Script><![CDATA[ import event.MessageDispatch; import event.MessageEvent; import mx.events.FlexEvent;
protected function panel1_creationCompleteHandler(event:FlexEvent):void { MessageDispatch.getInstance().addEventListener("send",setMsg); } private function setMsg(e:MessageEvent):void { txt.text=e.getmessage(); }
]]
></fx:Script><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><s:TextArea x="10" y="10" width="278" height="247" id="txt"/></s:Panel>
复制代码

主工程

复制代码
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*"><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --></fx:Declarations><local:left x="0" y="1" height="300"></local:left><local:right x="308" y="-1"></local:right></s:Application>
posted @ 2013-02-16 10:39  小糊涂仙儿  阅读(207)  评论(0编辑  收藏  举报