2010-12-19 29 views
2

我有一個Flash文件,其中包含一個「遊戲」包,其中有一個類「分數」和一個方法setValue()。我想寫一些Javascript的行,讓我可以調用這種方法。有人指示我參加本教程,但我仍然有點困惑。使用Javascript調用flash(.swf)文件中的方法?

Javascript: alert("start"); var so; so = document.embeds[0]; 
so.addParam("allowScriptAccess","always"); import flash.external.ExternalInterface; 
ExternalInterface.call("setValue[2600]"); 
  1. 顯示一個警告,告訴我,這確實已經開始執行
  2. 保存嵌入式閃存文件到一個變量,並設置訪問
  3. 進口該類
  4. 調用該方法

我不確定這個課程是如何工作的?這只是我能夠從該網站獲得的點點滴滴,但我並不真正瞭解它是如何工作的(但最終肯定會有希望)。這是網站:http://bytes.com/topic/flash/answers/694359-how-do-i-access-flash-function-using-javascript。當我通過輸入執行代碼時什麼也沒有發生,但是當我沒有這個聲明時,提示會出現嗎?

如果有人能詳細說明我可以怎麼稱呼這種方法,我會非常感謝! :)

回答

6

您在那裏的代碼是JavaScript和ActionScript的混合。

在ActionScript中,您需要註冊setValue函數以供外部使用,因此可以從JavaScript調用它。代碼可能是這個樣子:

package game 
{ 
    import flash.display.Sprite; 
    import flash.external.ExternalInterface; 
    import flash.text.TextField; 

    public class Scores extends Sprite 
    { 
     public var txtScore:TextField;  // A textfield in the sprite 

     public function Scores() 
     { 
      // Register the function for external use. 
      ExternalInterface.addCallback("setValue", setValue); 
     } 

     private function setValue(value:Number):void 
     { 
      txtScore.text = String(value); 
     } 

    } 

} 

和JavaScript可能會是這個樣子:

var so = document.embeds[0]; 
so.setValue(2600); 
+0

我做了同樣的步驟,但得到一個JS異常:'不能讀取未定義的屬性'setValue' – 2015-05-26 22:17:17

0

Adob​​e已經有一個漫長的,但有用的例子here的文檔。他們展示了ActionScript以及JavaScript,以及它們如何以兩種方式進行交互。

相關問題