分享java帶來(lái)的快樂(lè)

          我喜歡java新東西

          flash中ExternalInterface不會(huì)造成方法覆蓋

          在JavaScript與Flash的通信一文中我介紹了利用ExternalInterface來(lái)實(shí)現(xiàn)的JS與AS雙向通信,有朋友跟我提出疑問(wèn)如果AS或者JS中都定義了同名函數(shù),那么會(huì)造成方法覆蓋嗎?這的確是個(gè)需要考慮的問(wèn)題,通過(guò)測(cè)試證明,即使出現(xiàn)了同名方法的定義,它們也是相互獨(dú)立的,不會(huì)造成方法覆蓋。

            一、AS調(diào)用JS方法時(shí)出現(xiàn)同名方法(查看實(shí)例)

           
              AS代碼如下:
             
              import flash.external.*;
              var v =ExternalInterface.available;
              t_btn.onRelease = function (){
                  //調(diào)用JS函數(shù)
                  var s = ExternalInterface.call("say","JS函數(shù)調(diào)用成功!")
                  //調(diào)用AS本地函數(shù)
                  s +=say("\n本地函數(shù)調(diào)用成功!");
                  r_txt.text = s;
              }
              //AS本地函數(shù)
              function say(s){
                  return s;
              }
            
              HTML代碼:
             //定義一個(gè)JS函數(shù)
             function say(txt){
                  return txt;
              }

           可以看到在JS中定義了一個(gè)say方法供AS調(diào)用,現(xiàn)在我們?cè)贏S中定義了一個(gè)同名的say方法來(lái)驗(yàn)證它們是否會(huì)出現(xiàn)覆蓋。結(jié)果證明它們不會(huì)覆蓋,都工作得很好。(PS:不錯(cuò)~)


          二、JS調(diào)用AS方法時(shí)出現(xiàn)同名方法(查看實(shí)例)


            AS代碼如下://導(dǎo)入包
                  import flash.external.*;
                  //提供JS訪問(wèn)的函數(shù)名
                  var _method:String = "say";
                  //指定本地函數(shù)中this變量的作用域,可設(shè)置為null留空
                  var e_area:Object =null;
                  //AS內(nèi)部函數(shù)名
                  var method:Function = say;
                  //將函數(shù)注冊(cè)到容器列表
                  var wasSuccessful:Boolean = ExternalInterface.addCallback(_method, e_area, method);
                  //查看注冊(cè)是否成功
                  if(wasSuccessful){
                      result_txt.text = "函數(shù)注冊(cè)成功";
                  }
                  //本地的函數(shù)
                  function say(txt:String) {
                      result_txt.text = txt;
                  }

              HTML代碼如下:
           <div>
            <form>
             <input type="button" onclick="callExternalInterface()" value="JS調(diào)用AS方法" />
            </form>
            <script>
             function callExternalInterface() {
              thisMovie("demo").say("Hello,World");
             }
             //瀏覽器兼容訪問(wèn)DOM
             function thisMovie(movieName) {
              if (navigator.appName.indexOf("Microsoft") != -1)
              {
               return window[movieName]
              }else{
               return document[movieName]
              }
             }
             //定義一個(gè)JS本地函數(shù)
             function say(s){
              alert(s);
             }
            </script>
           </div>


            可以看到在AS中定義了一個(gè)say方法供JS調(diào)用,現(xiàn)在我們?cè)贘S中定義了一個(gè)同名的say方法來(lái)驗(yàn)證它們是否會(huì)出現(xiàn)覆蓋。結(jié)果證明它們不會(huì)覆蓋,都工作得很好。(PS:也不錯(cuò)~)


            通過(guò)上面的兩個(gè)例子我們可以得出結(jié)論在使用ExternalInterface時(shí)即使定義了同名方法,也不會(huì)造成方法覆蓋,你大可放心使用

          posted on 2012-04-19 22:52 強(qiáng)強(qiáng) 閱讀(442) 評(píng)論(0)  編輯  收藏 所屬分類: web技巧Flash

          主站蜘蛛池模板: 兴城市| 南岸区| 潞西市| 神池县| 贵德县| 濮阳市| 托克托县| 土默特右旗| 临武县| 汽车| 乐昌市| 贡觉县| 达拉特旗| 望奎县| 阿鲁科尔沁旗| 宁德市| 伊春市| 高台县| 张北县| 白城市| 高邮市| 皋兰县| 荣成市| 广西| 绥宁县| 葫芦岛市| 大厂| 鹰潭市| 什邡市| 财经| 河南省| 中超| 盱眙县| 吴川市| 白水县| 竹北市| 和顺县| 张北县| 左权县| 新源县| 伊宁县|