2012-01-17 4 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); 

내가하고 싶은 것은 플래시 외부와이 버튼을 넣어하는 것입니다

ExternalInterface.addCallback("save",handleOnSave); 

하지만 브라우저가

를 반환처럼 ExternalInterfacе 사용하여 자바 스크립트로이 함수를 호출

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

성공에 대한 경고 만 반환하고 작동하는 기능을 호출하려고합니다. 나는 이것을 찾아 사람들이 제안하는 유일한 것을 사용하는 것이다.

Security.allowDomain("*"); 

나는 그랬지만 문제는 남아있다.

편집 :

확인을 시도/캐치 오류 # 2176를 반환! 주의

+0

참조 용 : # 2176 - 팝업 창을 표시하는 것과 같은 특정 동작은 마우스 클릭 또는 버튼 누름과 같은 사용자 상호 작용시에만 호출 할 수 있습니다. –

답변

0

우선은

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

당신이 자바 스크립트에서 통과 할 수 없습니다 매개 변수로 이벤트 e을 가지고있다. e으로

는 당신이 그래서 Actiobscript에서

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

같은 기능을 정의 할 수 있습니다 handleOnSave 내에서 사용되지 않는, 당신은 뭔가를 호출 할 수 있습니다

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

    ExternalInterface.addCallback("save",handleOnSave); 

같은 자바 스크립트에서해야

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

자바 스크립트 코드를 공유하십시오. 다른 것이 잘못되었는지 보려고.

편집 :

는 오류

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

      ...existing code... 

     }catch(error:Error){ 

      return error.message; 

     } 

     return ""; 
} 

을 알아 내고 자바 스크립트 오류를받을 수에서 볼 수 있듯이.

+0

고마워,하지만 e : MouseEvent = null로 바꿨지 만 키보드 이벤트를 던지려고 할 때 문제가 아니며 handleOnSave가 작동하기 시작했다. 또한 작동하는 경우 간단하게 경고하는 다른 기능을 첵에 추가하십시오. 그리고 문제가 handleOnSave 함수 어딘가에 있지만 그것을 밖으로 찾을 수 없습니다 – Yovo

+0

다음 사용 시도 ... catch 및 오류를 찾으십시오. 답변을 업데이트했습니다. – Diode

+0

또는이 URL을 사용하여 디버그 구성을 만들고 문제를 식별 할 수 있습니다. – Diode