【问题标题】:call AS function from javascript/jquery从 javascript/jquery 调用 AS 函数
【发布时间】:2010-12-24 20:58:09
【问题描述】:

使用 jquery,JS 我们可以在 flex 代码中调用函数吗。下面是我有一个调用 AS 代码的按钮。如果可以,可以这样做吗?

 <script>
   function callas()
   {
    addBody();//call flex function        
   }
 </script>

 <input type="button" onclick="callas();" />

FLEX 代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">


<mx:Script>
<![CDATA[

import mx.controls.Button;
import mx.controls.Alert;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.media.*;
import flash.net.*;


public function addBody():void
{

  Alert.show("Got input from JS");

}
</mx:Script>


</mx:Application >

【问题讨论】:

    标签: javascript jquery actionscript-3 jquery-selectors mxml


    【解决方案1】:

    应该是这样的:

    Javascript

    function getFlashMovie(movieName) {
        document.getElementById(movieName).setAttribute("name", movieName);
        var isIE = navigator.appName.indexOf("Microsoft") != -1;
        return (isIE) ? window[movieName] : document[movieName];
    }
    
    function callas()
    {
       // You need to know the ID of the object/embed tag; swfobject has an attribute for that. see http://code.google.com/p/swfobject/wiki/documentation#How_can_you_configure_your_Flash_content?
       var swfobjectID = 'myFlashObjectID'  
       //call flex function 
       getFlashMovie(swfobjectID).addBody();
    }
    

    Actionscript / flex

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    
    <mx:Script>
    <![CDATA[
    
    import mx.controls.Button;
    import mx.controls.Alert;
    import flash.display.InteractiveObject;
    import flash.display.Sprite;
    import flash.media.*;
    import flash.net.*;
    import flash.external.ExternalInterface;
    
    //                "javascript function", flash function
    ExternalInterface.addCallback("addBody", addBody);
    
    public function addBody():void
    {
      Alert.show("Got input from JS");
    }
    </mx:Script>
    
    </mx:Application >
    

    来源:
    http://kb2.adobe.com/cps/156/tn_15683.html
    http://code.google.com/p/swfobject/wiki/documentation#How_can_you_configure_your_Flash_content?

    【讨论】:

      【解决方案2】:

      您需要使用名为ExternalInterface 的 Actionscript 类与 Javascript 进行交互。

      所以,如果你想从 Flex 或 Flash 调用一个 Javascript 函数,那么你应该使用这样的东西:

      ExternalInterface.call("Javscriptfunction", parameters);
      

      如果您想从 Javascript 调用 Actionscript,请尝试以下操作:

      ExternalInterface.addCallback("javascriptfunc", flexfunc);
      
      protected function flexfunc(result:String):void{
          trace(result);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-07-27
        • 2012-08-04
        • 1970-01-01
        • 2018-04-08
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 2019-03-01
        • 1970-01-01
        相关资源
        最近更新 更多