2012-01-17 4 views
0

だから、私は1つの機能があります。フラッシュ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); 

はフラッシュ外とするには、このボタンを置くことですが

ExternalInterface.addCallback("save",handleOnSave); 

が、ブラウザが

を返しますようExternalInterfacеを使用してJavaスクリプトでこの関数を呼び出します

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

私は成功のために警告を返すだけで機能しました。私はこれを探して、人々が示唆している唯一のものは使用することです

Security.allowDomain("*"); 

私はそれをしましたが、問題は残っています。

編集:

OKのtry/catchはエラー#2176を返されました!気づい

+0

参考:#2176 - ポップアップウィンドウを表示するアクションなど、特定のアクションは、マウスのクリックやボタンの押下など、ユーザーが操作したときにのみ呼び出すことができます。 –

答えて

0

まず最初は

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

であるあなたはJavascriptから合格することができませんこれは、パラメータとしてイベントeがあります。 eとして

は、あなたがそうActiobscriptで

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

のような関数を定義することができますhandleOnSave内部で使用されていない、それはあなたのような何かを呼び出すことができます

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

    ExternalInterface.addCallback("save",handleOnSave); 

ようにとJavascriptからあるべき

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

あなたのJavascript codを共有してください他の何かが間違っているかどうかを調べる。

EDIT:

それは

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

+0

それから、try ... catchを使用してエラーを見つけます。私は答えを更新しました。 – Diode

+0

または、このURLを使用してデバッグ設定を作成し、問題を特定できます。 – Diode

関連する問題