2012-09-05 76 views
0

可能重複:
calling a Flash ExternalInterface with JavaScriptFlash和外部JavaScript

我有AS代碼的Flash文件。我想運行將會運行AS的函數的Javascript。例如:在AS中,我有一個名爲「loadXML」的函數。保存名爲「pawel」的SWF文件的對象(對象的ID)。我怎樣才能運行一個Javascript代碼,將運行「pawel」函數「loadXML」?我正在使用帶有AS 3的Flash 6.

+0

檢查[ExternalInterface的(HTTP:// help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html)類。您將需要通過'addCallBack()'方法註冊該JS函數。 – inhan

回答

0

我相信這裏的目標是發送swf(已編譯外部.as文件)服務器上某處xml文件的位置,以便swf可以編譯,解析和創建一些內容。

我已經做了很多次了,使用了閃存變量,這對你也很有用。將.swf嵌入網頁時,可以通過js或html發送閃存變量,或者使用php動態發送。一旦我有我的fla工作與硬編碼變量完美(如xml)我然後添加閃存變量代碼的頭部,並做了一些小的調整fla - 它通常打破fla在flash中正常運行(因爲它是現在取決於這些外部變量)

不管怎麼說,這裏是我做的怎麼樣我的Flash變量(還有其他的方式,值得好好研究的谷歌搜索)

import flash.net.*; 

var flashVars:Object = new Object(); 
flashVars = this.loaderInfo.parameters; 
var xmlVal; 

for (var item:String in flashVars) 
{ 
    switch (item) 
    { 
     case "xmlLocation" : 
      xmlVal = String(flashVars[item]); 
      break; 

    } 

} 

下面是它發送的值的javascript:

<script type="text/javascript"> 

      //flashObj 
      var flashvars = {}; 
       flashvars.xmlLocation = "http://google.com/myXML.xml"; 
      var params = {wmode:"transparent"}; 
      var attributes = {}; 
       swfobject.embedSWF("images/banner.swf", "yourSliderId", "175", "300", "9.0.0", false, flashvars, params, attributes); 


     </script> 

這是使用S WFObject(一個開放的API flash嵌入js庫)來處理swf嵌入。我更喜歡它,因爲如果你看看上面的代碼,你可以閱讀並理解它,默認的方式很難閱讀,編輯和理解。

如果你只需要XML然後你就完成了,這將適用於你。如果您仍然需要說打到使用javascript「下一步」或「上一個」按鈕,請參閱本網站的文章,我相信這可以進一步幫助你: http://arrixlive.wordpress.com/2005/03/25/javascript-in-love-with-flash-control-swf-from-javascript/