AS3 获取http 的 url、及js与as3的互调

as3.0获取url参数,以及js和flash交互通信

一、as3.0获取URL是a.swf?id=50格式的参数值

知识点:import flash.display.LoaderInfo
使用loaderInfo.parameters["id"]的方式获取值。

简单的Demo

            package code{
                import flash.display.Sprite;
                import flash.display.LoaderInfo;
                
                public class gbCore extends Sprite{
                    private var id:String;
                    public function gbCore() {
                        id = loaderInfo.parameters["id"];
                        writeVal.txt.text = id;
                    }
            
                }
                
            }

二、as3.0获取URL是wmhfly.com?id=50格式的参数值

这个时候怎么获取值?

我的思路就是通过as去调用js,有js去获取值然后在回传给flash,中转的方式实现;



三、js和flash交互通信

知识点:import flash.external.ExternalInterface;
as--js:ExternalInterface.call(js函数名称,[传递参数值...])
js--as:ExternalInterface.addCallback(js函数名称,as等待被调用函数名称)

简单的Demo

js code

        //as调用函数
            function Alert(msg) {
                alert(msg)
            }
            //js调用as
            function thisMovie(movieName) {
                if (window.document[movieName]) {
                    return window.document[movieName];
                } else if (navigator.appName.indexOf("Microsoft Internet") == -1) {
                    if (document.embeds && document.embeds[movieName]) return document.embeds[movieName];
                } else {
                    return document.getElementById(movieName);
                }
            }
            function toASS(value) {
                thisMovie("toJs").toASS(value);
            }
   

as code

        package  code{
            import flash.display.Sprite;
            import flash.events.MouseEvent;
            import flash.external.ExternalInterface;
            public class toJs extends Sprite{
                
                public function toJs() {
                    toJS.addEventListener(MouseEvent.CLICK,clickHandler);
                    
                    //添加回调函数
                    ExternalInterface.addCallback("toASS",callHandler);
                }
                
                //as调用js方法
                private function clickHandler(e:MouseEvent):void{
                    //执行调用
                    ExternalInterface.call("Alert","hello word!");
                    
                }
                
                private function callHandler(msg:String):void{
                    Toas.txt.text = msg;
                }

            }
            
        }
   

提醒:在js调用as的调试中,很可能会遇到ie有效,而FF无效的bug。这个时候,很可能是你的插入Flash的html结构不兼容。在FF下是要用embed的标签的,一般我们测试都是用Flash默认发布的代码测试,这个时候就会让你测试的特别郁闷,总是无法解决FF的bug,此时,你就可以用一个swfobject.js等组件来插入你的flash,消除兼容性问题,就可以解决问题了....

附上:DEMO下载【注意,需要iis的支持】

原文:http://wmhfly.com/skillShow/ACTIONSCRIPT/skill-ACTIONSCRIPT-59.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值