2012-01-17 73 views
0

所以我有一個功能:閃存ExternalInterface.addCallback錯誤

public function handleOnSave(e:MouseEvent):void 
     { 
      var ml:MultipartURLLoader = new MultipartURLLoader(); 
      var bmData:BitmapData = scrollView.getBitmapData(); 
      ml.addEventListener(Event.COMPLETE, onSaveComplete); 

      // simple string data 
      ml.addVariable("ad_id", ParamsObject.lastInstance.param_id); 
      ml.addVariable("ad_type", ParamsObject.lastInstance.param_type); 
      ml.addVariable("image_width", bmData.width); 
      ml.addVariable("image_height", bmData.height); 
      ml.addVariable("save_data", scrollView.getSavedData()); 

      trace(scrollView.getSavedData()); 
      var jpgSource:Bitmap = null; 

      var jpgEncoder:JPGEncoder = new JPGEncoder(99); 
      var jpgStream:ByteArray = jpgEncoder.encode(scrollView.getBitmapData()); 
      var pngStream:ByteArray = PNGEncoder.encode(bmData); 
      ml.addFile(jpgStream, 'test2.jpg', "pic" , 'image/jpeg'); 
      trace(pngStream.length + ' ' + jpgStream.length); 
      ml.load("/flash/uploadFP.php"); 
     } 

我有按鈕來觸發它喜歡:

save_btn.addEventListener(MouseEvent.CLICK, handleOnSave); 

我想要做的就是把這個按鈕外閃,並調用Java腳本這個函數使用ExternalInterfacе,如:

ExternalInterface.addCallback("save",handleOnSave); 

但瀏覽器返回

uncaught exception: Error in Actionscript. Use a try/catch block to find error.

我嘗試調用函數只成功返回警報和它的工作。我搜索了這個,人們建議的唯一的東西是使用

Security.allowDomain("*"); 

我做到了,但問題仍然存在。

編輯:

OK try/catch語句返回錯誤#2176

+0

僅供參考:#2176 - 某些操作(例如顯示彈出式窗口的操作)只能在用戶交互時調用,例如通過鼠標單擊或按下按鈕。 – 2012-01-17 19:14:17

回答

0

注意到的第一件事是

public function handleOnSave(e:MouseEvent):void ... 

活動e作爲參數,您將無法從Javascript傳遞。

由於e未使用內部handleOnSave你可以這樣定義

public function handleOnSave(e:MouseEvent = null):void ... 

所以在Actiobscript的功能,它應該像

public function handleOnSave(e:MouseEvent = null):void{ 
    ..... 
    ..... 
    } 

    ExternalInterface.addCallback("save",handleOnSave); 

,並在Javascript中你可以調用像

document[*flash movie id*].save(); 

請分享您的Javascript cod e看看是否有其他問題。

編輯:

,因爲它顯示找出錯誤

public function handleOnSave(e:MouseEvent = null):String{ 
     try{ 

      ...existing code... 

     }catch(error:Error){ 

      return error.message; 

     } 

     return ""; 
} 

,並收到錯誤在Javascript。

+0

謝謝,但我將它改爲e:MouseEvent = null,但這不是我試圖使這個拋出鍵盤事件的問題,它的工作handleOnSave開始。如果它有效並且它做了,也可以用簡單的警報來製作另一個功能。問題是在handleOnSave函數中的某處,但我無法弄清楚它 – Yovo 2012-01-17 18:29:31

+0

然後,因爲它顯示使用try ... catch並發現錯誤。我已經更新了答案。 – Diode 2012-01-17 18:37:15

+0

或者您可以嘗試使用此URL創建調試配置並確定問題。 – Diode 2012-01-17 18:38:08