2009-11-04 22 views
0

這是我的AC3編碼ExternalInterface.addCallback工作不

private function uploadet(dosya:String):void { 

     var uploader:URLRequest = new URLRequest(dosya); 
      localFile.upload(uploader); 
    } 


     var a = flash.external.ExternalInterface.addCallback("uploadet",uploadet); 

這是使用Javascript

<script type="text/javascript" src="swfobject.js"></script> 
     <script type="text/javascript"> 

     swfobject.registerObject("myId", "9.0.0", "expressInstall.swf"); 



     function uploadet(dosya){ 
     var myFlashMovie = swfobject.getObjectById("myId"); 
     myFlashMovie.uploadet(dosya); 
     } 

     </script>   


<style type="text/css"> 
<!-- 
body { 
    background-color: #e6e6e6; 
    margin-top: 50px; 
} 
--> 
</style></head> 
    <body > 
     <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120"> 
       <param name="movie" value="SimpleUploader.swf" /> 
       <!--[if !IE]>--> 
       <object type="application/x-shockwave-flash" data="SimpleUploader.swf" width="300" height="120"> 
       <!--<![endif]--> 
       <div> 

       </div> 
       <!--[if !IE]>--> 
       </object> 
       <!--<![endif]--> 
      </object> 
      <div id="flash" align="center"> 

      </div> 

     <div align="center"><b>Javascript Feedback:</b></div> 
     <div align="center" id="output"></div>   

     <input type="button" name="Submit" value="Submit" onclick="uploadet('dsadsa.php');" /> 

我不能得到它的工作,任何幫助表示讚賞。

感謝

回答

0

你的問題是,你很可能沒有達到使用正確的<OBJECT>元素:

var myFlashMovie = document.getElementById('simpleUploader'); 

你的嵌套標籤具有相同id屬性,產生意想不到的效果。

您應該使用SWFObject(廣爲人知和使用的Flash嵌入庫)嵌入您的Flash影片並使用方法swfobject.getObjectById()正確訪問您的<OBJECT>標記。

要了解更多關於SWFObject的,請點擊此鏈接:

http://code.google.com/p/swfobject/

這是一個初學者教程可從Adobe(用於SWFObject的):在

http://www.adobe.com/devnet/flashplayer/articles/swfobject.html

查找getObjectById()通過以下鏈接獲取API文檔:

http://code.google.com/p/swfobject/wiki/api

+0

是的,我做的SWFObject和編輯我的問題,但它仍然沒有工作。 – 2009-11-04 19:21:59

+0

提供一些錯誤信息?當它不工作時發生了什麼? – 2009-11-04 21:32:03

5

您必須在網絡服務器上部署Flash應用程序才能測試它(或使您自己成爲本地Web服務器)。 如果您將文件從本地主機加載爲文件(file:/// c:.....),則Flash播放器將不允許您使用外部接口。

+0

事實上,這解決了我的情況下的問題。非常感謝你。 – 2012-08-07 09:07:22

1

當您嵌入SWF時,如果不允許使用腳本,則無法使用ExternalInterface,請閱讀Adobe Knowledge Base文檔以獲取更多信息。換句話說,使用此HTML,如果你直接嵌入到頁面上:

<object ... > 
    . 
    . 
    . 
    <param name="allowScriptAccess" value="always"/> 
</object> 

或者以下,如果你使用SWFObject:

var parametersObj = { allowScriptAccess: "always" }; 
swfobject.embedSWF(
    swfPath, 
    targetElement, 
    swfWidth, 
    swfHeight, 
    minFlashVersion, 
    expressInstall, 
    flashvarsObj, 
    parametersObj, 
    attributesObj 
); 
2

不要使用getObjectById方法來獲得swf對象。 您可以使用下面的代碼:

swfobject.registerObject("myId", "9.0.0", "expressInstall.swf", callbackFn); 
function callbackFn(status) { 
    if (status.success) { 
    var obj = status.ref; 
    document.getElementById("but1").onclick = function() { 
     if (obj && typeof obj.uploadet!= "undefined") { 
     obj.uploadet(dosya); 
     } 
     }; 
} 

更多細節可以參考Static Embed method:Browser communication test page with callback

Dynamic Embed method:Browser communication test page with callback

+0

這可能沒有解決他的問題,但它解決了我的問題。我相信這是相關的。 – 2012-08-13 19:16:53