2012-04-18 17 views

回答

0

你應該給你的問題更多的上下文。根據我在教程中閱讀的內容,您可能會忽略爲您的代碼添加安全訪問權限。更精確地看這裏:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback%28%29,特別是在這裏:

SecurityError - 包含環境屬於調用代碼無法訪問的安全沙箱。要解決此問題,請按照下列步驟操作: 在用於包含HTML頁中的SWF文件的object標籤中設置以下參數:

param name="allowScriptAccess" value="always" 

In the SWF file, add the following ActionScript: 

flash.system.Security.allowDomain(sourceDomain) 

希望它能幫助。

0

flex 4.5

第一添加的addCallback,像這樣在你的MXML

public function initApp():void { 
     ExternalInterface.addCallback("myFlexFunction",myFunc); 
} 

myFlexFunction現在可以從您的JavaScript訪問。

讓您index.template.html看起來像這樣

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- saved from url=(0014)about:internet --> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head> 
     <title>addCallback() Wrapper</title> 
     <script type="text/javascript" src="swfobject.js"></script> 
     <script type="text/javascript"> 
      var swfVersionStr = "0"; 
      var xiSwfUrlStr = ""; 
      var flashvars = {}; 
      var params = {}; 
      params.quality = "high"; 
      params.bgcolor = "#ffffff"; 
      params.allowscriptaccess = "sameDomain"; 
      var attributes = {}; 
      attributes.id = "AddCallbackExample"; 
      attributes.name = "AddCallbackExample"; 
      attributes.align = "middle"; 
      swfobject.embedSWF(
       "AddCallbackExample.swf", "flashContent", 
       "100%", "100%", 
       swfVersionStr, xiSwfUrlStr, 
       flashvars, params, attributes); 
     </script> 
    </head> 
    <SCRIPT LANGUAGE="JavaScript"> 
     function callApp() { 
      window.document.title = document.getElementById("newTitle").value; 
      var AddCallbackExample = document.getElementById("AddCallbackExample"); 
      AddCallbackExample.myFlexFunction(window.document.title); 
     } 
    </SCRIPT> 

    <body> 
     <form id="f1"> 
      Enter a new title: <input type="text" size="30" id="newTitle" onchange="callApp()"> 
     </form> 
     <div id="flashContent"/> 
    </body> 
</html> 

和你的Flex這樣

<?xml version="1.0"?> 
<!-- wrapper/AddCallbackExample.mxml --> 
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="initApp()"> 
    <fx:Script> 
     import flash.external.*; 

     public function initApp():void { 
      ExternalInterface.addCallback("myFlexFunction",myFunc); 
     } 

     public function myFunc(s:String):void { 
      l1.text = s; 
     } 
    </fx:Script> 

    <s:Label id="l1"/> 

</s:Application> 

希望這有助於

+0

我也是用同樣的方式.. 我的應用沒有抓到,我做錯了什麼。 你有什麼想法我怎麼能跟蹤代碼一個 – Nidhi 2012-04-25 12:45:28

+0

1.運行應用程序是調試模式 2.有痕跡在flex 3. console.log在JavaScript – Dhiraj 2012-04-25 13:09:08

相關問題