加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex与flash进行交互及其通讯方式

发布时间:2020-12-15 01:35:39 所属栏目:百科 来源:网络整理
导读:源代码 TestFlex_Flash.mxml ?xml version="1.0" encoding="utf-8"? mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml " layout=" absolute " xmlns:local=" * " ??? mx:Script ??? ![CDATA[ ??? ??? import flash.profiler.showRedrawRegions; ??

源代码TestFlex_Flash.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">

??? <mx:Script>

??? <![CDATA[

??? ??? import flash.profiler.showRedrawRegions;

??? ????import mx.controls.Alert;

??? ????import flash.utils.Timer;

??? ????import flash.events.TimerEvent;

??? ????

??? ??? public function testf():void{

??? ??? ???Alert.show("已经调用");

??? ??? ???trace("ljlo");

??? ??? ???

????????????? var time:Timer=new Timer(1000,1);

????????????? time.start();

????? time.addEventListener(TimerEvent.TIMER_COMPLETE,invokeFlash);??? ????? ???

??? ??? }

??? ???

??? ??? public function loadSwf():void{

?????????? //传入此flex对象

??? ??????? Object(swfgame.content).setApp(this);

//??? ???????? Object(swfgame.content).toFlex();

??? ???????

??? ??? }

??? ???

??? ??? public function invokeFlash(inovevent:TimerEvent):void{

???????????? //调用flash组件实例类对象的方法(myC为在flash帧中定义)

??? ??????? Object(swfgame.content).myC.innerFunction();

??? ??? }

??? ???

??? ??? public function parentMethod():void{

??? ??????? Alert.show("调用父方法......");;

??? ??? }

??? ]]>

??? </mx:Script>

??? <mx:SWFLoader id="swfgame" source="test.swf" x="174" y="75" width="330" height="200" creationComplete="loadSwf()"/>

??? <local:TestComponent? id="component">

??????

??? </local:TestComponent>

</mx:Application>

?

源代码TestComponent.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:local="*">

??? <mx:Script>

??? <![CDATA[

??? ????import mx.controls.Alert;

??? ????

???? ?????? public function testf():void{

??? ??? ???Alert.show("class组件已经调用了....");

??? ??? ???trace("ljlo");

??? ??? }

??? ]]>

??? </mx:Script>

<!--?? <mx:SWFLoader id="swfgame" source="test.swf" x="174" y="75" width="61" creationComplete="loadSwf()"/>-->

???? <local:VisualView id="view" />

</mx:Canvas>

?

?

源代码VisualView.as

?

package

{

??? import mx.core.IMXMLObject;

??? import mx.controls.Alert;

?

??? public class VisualView implements IMXMLObject

??? {

????? protected var view : Object;

????? protected var id : String;?????

????? public function initialized( document : Object,id : String ) : void

????? {

???????? this.view = document;

???????? this.id = id;

????????

????? }????

?????

??? ? public function VisualView()

??? ? {

??????????

??? ? }

??? ?

??? ? public function testView():void{

??? ? ? Alert.show("调用无视图方法。");

??? ? }

??????

????? Public function invokeFlashMethod():void{

??????? ??Object(View.parentApplication.swfgame.content).

myC.innerFunction();

}????

?

??? }

}

?

?

Flash端程序

Flash帧里代码如下

import flash.utils.Timer;

import flash.events.TimerEvent;

?

var flexApp:Object;

function setApp(ap:Object):void {

???????? this.flexApp=ap;

//????? myC.passFlex(flexApp);

????????

???????? var time:Timer=new Timer(1000,1);

???????? time.start();

???????? time.addEventListener(TimerEvent.TIMER_COMPLETE,toFlex);

}

var myC:MyClass=new MyClass();

?

function toFlex(eve:TimerEvent){

???????? flexApp.component.testf();?????? //flash调用flex子组件方法

???????? flexApp.component.view.testView();?? //flash调用flex非可视组件组件中方法

??? flexApp.testf(); ???????????????????//flash直接调用flex加载该游戏作用域内方法

??? flexApp.component.parentApplication.parentMethod();?? //flash调用flex父组件方法

???????? myC.passFlex(flexApp);

}

?

MyClass类源代码

package {

????????

???????? public class MyClass {

?????????????????? public var myObj:Object=null;

?????????????????? public function MyClass() {

?

?????????????????? }

?????????????????? public function passFlex(obj:Object) {

??????????????????????????? //obj.testf();

??????????????????????????? myObj=obj;

?????????????????? }

?????????????????? public function innerFunction(){

??????????????????????????? //myObj.component.testf();

??????????????????????????? trace("i am from the flash inner class")

?????????????????? }

???????? }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读