Flex是开发Ria的利器,Flash在动画 游戏等方面较强大,可以制作出更生动 形象,富有乐趣性的交互产品来。
在多数情况下需要2者结合。
两者之间的通讯是依靠事件机制完成的。
以下的例子是:Flash提交数据给Flex,Flex改变Flash的数据。
1:Flash CS4工具打开
按如下 属性 制作界面
2:按 F9 ,输入以下代码:
//提交按钮 来广播一个 事件给Flex
subBtn.addEventListener(MouseEvent.CLICK,sendToFlexHandler);
var resultFlash:int=10;
function sendToFlexHandler(evt:MouseEvent):void
{
//广播了 FlashSended 事件
dispatchEvent(new Event("FlashSended"));
}
subBtn.addEventListener(MouseEvent.CLICK,sendToFlexHandler);
var resultFlash:int=10;
function sendToFlexHandler(evt:MouseEvent):void
{
//广播了 FlashSended 事件
dispatchEvent(new Event("FlashSended"));
}
//用于给flex 传值的 接口
function getResult():int
{
return resultFlash;
}
function getResult():int
{
return resultFlash;
}
3:测试 发布
下面来讲讲Flex的调用Flash并通讯
代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.events.Event;
private function init():void
{
//是 swfLoader的content属性来侦听 Flash内容的 事件
sl.content.addEventListener("FlashSended",FlashSendedHandler);
}
private function FlashSendedHandler(evt:Event):void
{
//Flex 已经侦听到了 Flash发送的FlashSended事件
trace("I reiceived!");
//Flex控制了flash内容里的 receiveTxt 文本内容
evt.target.receiveTxt.text="ok ,I received Flex data";
//Flex调用flash里的getResult方法
var a=evt.target.getResult();
trace(a+"------------");
}
private function initFlashTxt(evt:Event):void
{
//打开swf时 便给swf赋值传参
evt.target.content.initTxt.text="flex init value";
}
]]>
</mx:Script>
<mx:SWFLoader x="178" y="33" width="354" height="226" id="sl" source="FlashToFlex.swf" scaleContent="false" complete="initFlashTxt(event)"/>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.events.Event;
private function init():void
{
//是 swfLoader的content属性来侦听 Flash内容的 事件
sl.content.addEventListener("FlashSended",FlashSendedHandler);
}
private function FlashSendedHandler(evt:Event):void
{
//Flex 已经侦听到了 Flash发送的FlashSended事件
trace("I reiceived!");
//Flex控制了flash内容里的 receiveTxt 文本内容
evt.target.receiveTxt.text="ok ,I received Flex data";
//Flex调用flash里的getResult方法
var a=evt.target.getResult();
trace(a+"------------");
}
private function initFlashTxt(evt:Event):void
{
//打开swf时 便给swf赋值传参
evt.target.content.initTxt.text="flex init value";
}
]]>
</mx:Script>
<mx:SWFLoader x="178" y="33" width="354" height="226" id="sl" source="FlashToFlex.swf" scaleContent="false" complete="initFlashTxt(event)"/>
</mx:Application>