2012-08-16 2 views
1

저는 최근에 Flash AC3을 배우고 배우기를 원했고 저의 의도는 내 웹 사이트 용 작은 음성 녹음기를 만드는 것이 었습니다. 나는 구글과 검색 엔진을 사용하여 여기 저기에 다른 해답을 얻었지만 여전히 정확하게 작동하지는 않습니다.플래시 마이크 이벤트 크기 조정

내가 겪고있는 문제는 플래시 플러그인이 215x50 픽셀입니다. 215x138 픽셀이 아니라면 플래시 플레이어 보안 패널이 자동으로 열리지 않는다는 것을 알고 있습니다.

보안이 열리도록 호출되는 경우, 플래시 객체가 215x138의 크기로 ResizeFlash라는 자바 스크립트 함수를 사용하고 Dx의 크기가 215x50으로 다시 변경되는 경우 작업을 고안했습니다. 사용자가 마이크를 허용할지 여부를 결정한 후

이제 다음 코드를 얻고 DIV의 크기를 조정하지만 DIV의 크기를 다시 조정하지 않기 때문에 며칠 동안 머리를 긁적니다. 나는 ResizeFlash를 잘못된 장소 (???)에 호출 할 것 같아요. 나는 그것이 어디에 틀릴지 알기에 충분히 익숙하지 않다.

코드가 작동하는지 확인하기 위해 코드를 재정렬하고 215x138 크기로 조정 한 다음 보안 패널을 열고 215x50 크기로 다시 조정하지만 녹화가 시작되지 않습니다. 어딘가에있는 루프.

누군가가 시간을내어이 코드를 한눈에 살펴보고이를 처리 할 수있는 올바른 방법을 보여주기 바랍니다. 고마워요!

public function Main():void 
{ 
    recButton.stop(); 
    submitButton.enabled = false; // These reset everything, maybe in wrong place?? 
    activity.stop(); 
    addListeners(); 

     mic = Microphone.getMicrophone(); 

     if (mic == null) 
     { 
      // no camera is installed 
     } 
     else if (mic.muted) 
     { 
      // user has disabled the access in security settings 
      mic.addEventListener(StatusEvent.STATUS, onMicStatus, false, 0, true); // listen out for their new decision 
      Security.showSettings('2'); // show security settings window to allow them to change security settings 
     } 
     else 
     { 
      // you have access 
      mic.setUseEchoSuppression(true); //... also this might be in wrong place? 
      // .. I would like this to always be on 
     } 
    } 

    private function addListeners():void 
    { 
     recButton.addEventListener(MouseEvent.MOUSE_UP, startRecording); 
     submitButton.addEventListener(MouseEvent.MOUSE_UP, onSend); 
     recorder.addEventListener(RecordingEvent.RECORDING, recording); 
     recorder.addEventListener(Event.COMPLETE, recordComplete); 
     activity.addEventListener(Event.ENTER_FRAME, updateMeter); 

    } 

    function onMicStatus(event:StatusEvent):void 
    { 
     if (event.code == "Microphone.Unmuted") 
     { 
      mic.removeEventListener(StatusEvent.STATUS, onMicStatus); 
      ExternalInterface.call('ResizeFlash', '215', '50'); // When the user presses allow, resize the div back to 215x50 
     } 
    } 

    private function startRecording(e:MouseEvent):void 
    { 
     recorder.record(); 
     e.target.gotoAndStop(2); 

     recButton.removeEventListener(MouseEvent.MOUSE_UP, startRecording); 
     recButton.addEventListener(MouseEvent.MOUSE_UP, stopRecording); 

    } 

    private function stopRecording(e:MouseEvent):void 
    { 
     recorder.stop(); 

     e.target.gotoAndStop(1); 

     recButton.removeEventListener(MouseEvent.MOUSE_UP, stopRecording); 
     recButton.addEventListener(MouseEvent.MOUSE_UP, startRecording); 
    } 

내가 잘못된 순서로 거기에서 뭔가를 알고 .. : 여기

코드입니다! 나는 어떤 의견을 주셔서 감사합니다.

답변

0

마이크의 상태 이벤트 핸들러에서 215x50으로 앱의 크기를 조정하는 것이 너무 일찍 올 수 있습니다.

깜박하지만 플래시 보안 패널에서 "허용"라디오 버튼을 클릭하면 해당 상태 이벤트가 즉시 전달됩니다. 패널이 아직 열려 있습니다. 사실, 당신이 그것을 열어두고 허용/거부 사이를 클릭하면 매번 파견됩니다. ...

보안 패널이 올라 갔을 때 할 수없는 일이 있습니다. ExternalInterface (크기를 조정하려면)을 사용하면이 버킷에 떨어지는 지 궁금합니다.

나는 다음을 제안 :

  1. 을 테스트 크기 조정 기능을 믹스의 보안 패널을 사용하지 않고. 이 코드가 양방향으로 앱의 크기를 성공적으로 조정했는지 확인하십시오.
  2. 그런 다음 사용자가 실제로 보안 패널을 닫을 때를 감지하는 방법에 대해 this question을 살펴보십시오. 여기에는 두 가지 접근법이 있습니다. 하나는 매우 해킹 (BitmapData.draw() 해킹)이지만 작동하는 것입니다. 나는 두 번째 시도를 제안하고 거기에 대해 의견을 말하거나/작동 시키면 upvoting한다 (나는 그렇게 할 것이다). 사용자가 대화 상자를 닫을 때이를 감지하는 더 우아한 방법이지만 시도해 볼 기회가 없습니다.
  3. 대화 상자가 닫힌 것을 감지하면 응용 프로그램의 크기를 조정하십시오.
+0

답장을 보내 주셔서 감사합니다. 재밌 네요. 최근 플래시와 AS3에서 놀기 시작한 이래로 오랫동안 C++과 JS, HTML로 코딩 해왔고 플래시에도 여전히 많은 버그가 있습니다.:) – abelusmc

+0

보안 대화 상자와 관련된 문제는 개발자에게 까다로울 수 있습니다. 모든 제한은 사용자를 보호하는 것입니다 (예 : 사용자가 카메라/마이크 액세스 허용 등으로 속일 수 없음). 즉, API의 우리는 가끔은 짧은 가을과 함께 일해야한다고 :) 당신의 경험 승/플래시 향상 바랍니다. Flash에 대해 내가 좋아하는 점 중 하나는 일관성입니다. 작동하면 모든 플랫폼/브라우저에서 99 %의 시간 동안 모든 브라우저의 고유 한 특성에서 벗어날 수 있습니다. –

+0

내가 할 수있는 것을 알아내는 불면의 밤의 약 1 주 이후에 나는 일종의 gimick을 생각해 냈다. .. 나는 무대를 찾는다는 것을 말하는 몇 가지 대답을 읽었다. FOCUS 이벤트. 나는 또한 BITMAP 해킹을 시도했지만, 최신 플래시 플레이어에서 BITMAP은 패널을 사용해도 작동한다고 생각합니다. (시도했을 때 곧 확인을 할 수 있기 때문에 생각합니다.) – abelusmc

관련 문제