這是AS3部分:通過JavaScript調用中的ActionScript3 file.browse()觸發一個錯誤
import flash.net.FileReference;
import flash.events.Event;
import flash.external.ExternalInterface;
import flash.system.Security;
Security.allowDomain("*");
// file reference:
var file:FileReference = new FileReference();
ExternalInterface.addCallback("bFile" , choose);
function choose():void{
ExternalInterface.call("alert('browse')");
file.browse();
}
HTML部分:
<object width="1px" height="1px">
<param name="movie" value="./ftest/uploader.swf">
<embed width="1px" height="1px" allowscriptaccess="always" id="uploader" src="./ftest/uploader.swf">
</object>
JS部分:
$("#uploader")[ 0 ].bFile();
更新: - [通過點擊按鈕調用的動作]
$("#uploader")[ 0 ]
返回對象(就如同我用getElementById
)。
觸發後,警報被扔在它「broswe」,因此,我知道choose()
被調用。
但它不能獲得進一步。
我得到在每個瀏覽器的控制檯,這些行:未捕獲的錯誤:錯誤調用NPObject方法。
你能幫我弄清楚這裏有什麼問題嗎?
是的,謝謝。我知道。剛剛在帖子中錯過了它。我通過點擊一個按鈕來調用這個動作。 –
問題是,Flash Player運行時並不知道最終進行調用的JavaScript捕獲的點擊,它只知道發生點擊或鍵盤事件時發生了焦點,因此無法運行,有時間來驗證/知道這實際上是爲了響應點擊。在我的快速評估中,我是否正確地點擊是在JS中捕獲的,然後觸發對Flash容器的回調?重新檢查代碼看起來如此。 – shaunhusain
是的,你說得對。但是,我如何將事件傳遞給AS?我嘗試過'onclick ='$(\「#uploader \」)[0] .bFile(event)''和'function choose(e:Event):void',但它失敗了。我昨天開始學習AS,我想我錯過了邏輯。 –