Flex与FLASH交互

    最近做一个决策分析项目,需要使用到FLEX,而在使用的过程中,逐渐的接触到了FLASH,突然发现,用FLASH来做动画或者图表,用FLEX与JAVA后台进行交互,是一个非常方便的事情。唯一的障碍莫过于,FLEX与FLASH之间的数据交互。

    其实这本身也不难,解决的方法就是通过Actionscript3.0.这需要注意的是,Flash cs5以上的版本才支持AS3.0,更以前的版本只支持AS2.0,我用的FlexBuilder是4.6,同样支持AS3.0。这样促使了As3.0可以完美的成为中间桥梁

    以下代码为FLEX端

<?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"

      creationComplete="application1_creationCompleteHandler(event)">

 <fx:Script>

  <![CDATA[

   import mx.events.FlexEvent;

   private var flexArr:Array = new Array();

   protected function swfLoader_completeHandler(event:Event):void

   {
    // flash加载完成后,传入参数
    Object(swfLoader.content).InitApp(this,this.flexArr,"交互测试");
   }
   protected function application1_creationCompleteHandler(event:FlexEvent):void
   {
    this.flexArr.push(1111,2222,3333,4444);
    swfLoader.source="flash/RecComp.swf";  
   }
  ]]>
 </fx:Script>
 <s:SWFLoader source="" id="swfLoader" width="190" height="373" left="100" top="100" complete="swfLoader_completeHandler(event)" />
</s:Application>

    从上面代码可以看出,FLEX调用了一个RecComp.swf的Flash文件,在这个swf中,要写一个InitApp方法,传入一个对象(供FLASH调用FLEX,后续讲)一个数组用来存值和一个标题,如下

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
stop();
var flexApp:Object;
function InitApp(ap:Object,aarFlex:Array,titleMsg:String):void
{
 this.flexApp = ap;
 
 var array:Array = new Array();
 var rec1:Rec1 = new Rec1();
 var rec2:Rec2 = new Rec2();
 var rec3:Rec3 = new Rec3();
 var rec4:Rec4 = new Rec4();
 var rec5:Rec5 = new Rec5();
 var rec6:Rec6 = new Rec6();
 var rec7:Rec7 = new Rec7();
 var rec8:Rec8 = new Rec8();
 array.push(rec1,rec2,rec3,rec4,rec5,rec6,rec7,rec8);
 
 var format:TextFormat = new TextFormat("微软雅黑",22,"0x663300");
 format.bold="bold";
 format.align = "center";
 var tf:TextField=new TextField();
 
 tf.height=30;
 tf.width=100;
 tf.x=12.15;
 tf.y=47.3;
 tf.text=titleMsg;
 tf.setTextFormat(format);
 addChild(tf);
 
 for(var i:int=0;i<aarFlex.length;i++){
  array[i].x=15;
  array[i].y=300 - 35*i;
  var recInfo:RecInfo=new RecInfo();
  recInfo.x=155;
  recInfo.y=300 - 35*i - 3;
  recInfo.titleInfo.text=aarFlex[i]+"人";
  addChild(array[i]);
  addChild(recInfo);
 
  setChildIndex(array[i],i+1);
 }
}

    function InitApp(ap:Object,aarFlex:Array,titleMsg:String):void  这个方法为主要接收参数。至于里面别的代码,是我自己做的无件,与交互不相关。这个组件我会发至网盘,里面还包含了通过Flash来做动画,做元件等、供大家交流


http://pan.baidu.com/s/1c0AhNY4  源码地址

你可能感兴趣的:(Flex)