2012-12-14 55 views
2

AS3:如何從動作傳遞對象的數組的JavaScript

ExternalInterface.addCallback('getParams', getParams); 
function getParams() 
     { 
      var params:Array = new Array(); 
      for(i = 0; i < images.length; i++) 
      { 
       params.push(picWin.getChildAt(i)); 
      } 

      return params; 
     } 

JS:

$('#button').click(function(){ 

     var res = document.getElementById("swfobject").getParams(); 
     alert(res); 

    }) 

所以以後我得到一些NPO對象錯誤的錯誤,不能弄明白它的意思是什麼,但如果我傳遞一個數組本身就好了,如果我傳遞一個對象本身也可以,但是當我傳遞一個對象數組時,它會給我一個錯誤NPO,如何解決這個問題?

+0

還當我試圖通過 – Zecrow

+0

你的內返回內部的對象的對象恰巧AS僅在AS內。爲了將某些東西發送回JS,您需要使用ExternalInterface.call(); –

回答

2

從AS到JS要使用

ExternalInterface.call("myJsFunction", myArray); 

在這個例子中通過,則需要2個JS功能:第一處理點擊發送到您的SWF的請求。二是由SWF調用你的返回值:

AS3:

ExternalInterface.addCallback('getParams', getParams); // listens for JS to getParams 
function getParams() 
    { 
     var params:Array = new Array(); 
     for(i = 0; i < images.length; i++) 
     { 
      params.push(picWin.getChildAt(i)); 
     } 

     ExternalInterface.call("handleParams", params); // calls a js function and passes params 
    } 

JS:

$('#button').click(handleClick) 

function handleClick(event){ 
    document.getElementById("swfobject").getParams(); //sends request to swf 
} 

function handleParams(params){ // handles response from swf 
    alert("You got an array with " + params.length + " elements back from flash."); 
} 
相關問題