1

據我所知,ActionScript主要用於控制Flash網站上的圖形輸出:例如基於Flash的遊戲。ActionScript:執行非圖形操作

但是,我希望ActionScript執行與圖形輸出無關的任務。出於瀏覽器兼容性考慮,任務更適合ActionScript:比如文件上傳。

因此,是否可以使用ActionScript而不是JavaScript來完成JavaScript等不可能完成的任務,例如文件上傳?

以下可能嗎?

  • 運行HTML按鈕上的ActionScript按?
  • 將信息從HTML/JavaScript發送到ActionScript?
  • 在ActionScript中沒有任何圖形輸出的處理信息?
  • 從ActionScript到HTML/JavasScript的Ouptut信息?

我想知道,如果ActionScript可以做我想做的事情。

我將有一個正確的功能調用圖片。

回答

1

ExternalInterface的是你的朋友: http://help.adobe.com/nl_NL/Flash/CS5/AS3LR/flash/external/ExternalInterface.html

一些提示在使用ExternalInterface的:

  • 設置allowScriptAccess爲 「always」 在HTML嵌入代碼
  • 確保閃光燈始終有一個ID在你的html代碼

一些簡單的例子:

1.抓鬥從JavaScript的值閃爍

// actionscript 3 code 
if (ExternalInterface.available) 
{ 
    var url:String = ExternalInterface.call("document.location"); 

    // output to textfield 
    var t:TextField = new TextField(); 
    addChild(t); 
    t.text = url; 
} 

2。調用帶有參數的函數從閃存

// actionscript 3 code 
if (ExternalInterface.available) 
{ 
    var result:String = "Flash rocks" 
    ExternalInterface.call("alert", result); 
} 

3.從JavaScript調用帶有參數的函數到Flash:

// javascript 
window.onLoad = function() 
{ 
    document.getElementById('flashId').doSomething("javascript rocks"); 
} 

..和

// actionscript 3 

if (ExternalInterface.available) 
{ 
    ExternalInterface.addCallback("doSomething", handleSomethingFromJavascript);// links js function to as3 function 
    function handleSomethingFromJavascript(value:String):void 
    { 
     // output to textfield 
     var t:TextField = new TextField(); 
     addChild(t); 
     t.text = value; 
    } 
} 

你可以做很多閃光燈和JavaScript之間的東西,你可以看到整合幾乎是無痛的!唯一值得注意的是,在Flash中ExternalInterface不可用,所以你必須在瀏覽器中測試。您可以使用wmode="transparent"製作一個透明的Flash對象。您不能使用display:nonevisibility(css),因爲此時閃存沒有執行或運行速度較慢。爲了確保它能夠持續運行,請將它放在頁面上的某個角落或其他東西上position:fixed(css)。瀏覽器在不在屏幕或不活動的狀態下(即在非活動選項卡中)使Flash對象以某種睡眠模式(較慢)運行

+1

嗨馬克。 +1並感謝您的出色答案。我將使用上面的功能,並且我看到我嘗試完成的是完全可行的。因爲這個答案完美和最完全的回答我的問題,我將它標記爲*接受答案* –

+0

感謝您的客氣話 –

1

你不能真正用動作替換javascript,但你可以與它交互。

「在HTML按鈕按下運行ActionScript?」 - 是的,這可以通過ExternalInterface.registerCallback。但是,許多操作(iirc,打開文件瀏覽器)只能在用戶與Flash進行交互時完成,因此您需要使用閃光燈按鈕。

「從HTML/JavaScript將信息發送到ActionScript?」也可以通過externalInterface或flashvars(但僅在啓動時)。

「在ActionScript中沒有任何圖形輸出的過程信息?」 - 這是一種編程語言,很確定。你有什麼想法?

「從ActionScript到HTML/JavasScript的Ouptut信息?」 - 是的,也通過ExternalInterface。

+0

+1,感謝您的好解答。你問我,「我心裏想的是什麼」,關於在沒有圖形輸出的情況下執行ActionScript。那麼,我不希望的是必須插入一個Flash小程序,以便能夠將ActionScript包含到我的網頁中。我認爲,ActionScript是爲了在網站上支持Flash對象而開發的,因此它與它們無法分離。 –

+0

那麼你需要在你的頁面上的某處顯示一個swf才能執行actionscript,沒有辦法。你不能像javascript一樣使用它(直接在網頁上)。 –

+0

是的,這就是我的意思。但是我認爲,包含重要ActionScript對象的Flash對象可以隱藏在網頁上,對嗎?換句話說,它不會干擾設計。 –