您当前的位置: 首页 >  Jave.Lin http

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

Jave.Lin 发布时间:2012-07-06 20:30:46 ,浏览量:5

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

关注
打赏
查看更多评论

Jave.Lin

暂无认证

  • 5浏览

    0关注

    546博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录