Flex 和AS3 SWF交互(不需要Localconnection)

由于Localconncetion的某些限制(一台客户只可以使用特定名字的一个连接,这样的程序如果开两个窗口就会发生异常),今天闲着没事做了一个 这样的试验。让Flash CS3和Flex的代码可以相互调用,为了显示效果,我在双方的界面分别放置了一个文本输入框和一个按钮。
这是Flex端的代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
    <![CDATA[       
        //把当前的application引用告诉swf
        private function onSwfLoaded(event:Event):void{
            Object(myloader.content).setApp(this);
        }
       
        //准备给swf调用的方法
        public function appshowtext(str:String):void{
            textinput.text=str;
        }
       
    ]]>
</mx:Script>
    <mx:SWFLoader id="myloader" source="local.swf" creationComplete="onSwfLoaded(event)"/>
    <mx:TextInput id="textinput"/>
    <mx:Button label="send to local.swf" click="Object(myloader.content).swfshowtext(textinput.text);"/>
</mx:Application>



这是Flash CS3里面的第一帧的代码:

var app:Object;
display_txt.autoSize=TextFieldAutoSize.LEFT;

function swfshowtext(str:String):void{
    display_txt.text=str;
}

function setApp(ap:Object):void{
    this.app=ap;
}

mybtn.addEventListener(MouseEvent.CLICK,onClick);

function onClick(event:MouseEvent):void{
    app.appshowtext(display_txt.text);
}



如果大家有更好的办法,或者更加正规的方式不妨直言!

基本上都是这么做,adobe的做法也是这样类似,是通过 ApplicationDomain.currentDomain.getDefinition,先获得该加载swf的类的声明,然后强转 myloader.content,不过个人感觉多此一举,我就是直接设置,唯一的好处是可以知道该swf转换成什么类,这样共有属性和方法就是可见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值