2010-03-21 2 views
1

저는 flex 어플리케이션을 가지고 있고 <mx:SWFLoader>을 사용하여 플래시 (SWF) 파일을 임베드했습니다. 플래시 파일에는 '종료'버튼이 있습니다. Flex 어플리케이션에서 버튼 클릭 이벤트를 처리 할 수 ​​있어야합니다.임베디드 플래시 컨트롤에서 flex 컨트롤 적용

그래서 플래시 파일의 해당 버튼을 클릭하면 상위 플렉스 응용 프로그램에서 작업을 수행하려고합니다. 어떻게해야합니까? 감사!

답변

0

플래시에서 이벤트가 "버블 링"되면이 작업을 수행 할 수 있습니다. 당신이 플래시에서 이벤트를 전달하면,이 작업을 수행 :

dispatchEvent(new Event("myEventName", true)); // that 'true' for bubbles, in the constructor 

는 그런 다음에, 플렉스에 아무런 문제를 캡처 할 수 있어야합니다 : 한 ...

addEventListener("myEventName", handler); 

addEventListener가 불리는 SWFLoader 이상의 컴퍼넌트 당신이 플래시 SWF를 수정할 수 없습니다, 또는 완전한 블랙 박스의 경우

는, 당신은 단지 useCapture = trueMouseEvent.CLICK 핸들러를 등록하고, 오른쪽 버튼인지를 확인할 수 있습니다 :

swfLoader.addEventListener(MouseEvent.CLICK, swfLoader_clickHandler, true, 0, true); 

protected function swfLoader_clickHandler(event:MouseEvent):void 
{ 
    if (event.target.name == "some_way_to_identify_the_button") 
     // do X 
} 

희망 도움이, Lance

+0

@viatroops은 : 야,이 작동하지 않았다. 나는 플로라에 접근 할 수있다. fla는이 코드 줄'dispatchEvent (newEvent ("myEvent"), true));을 실행하고 Flex의 SWFLoader에'swfloader_completeHandler' 이벤트 핸들러를 가지고 있습니다. 이 메소드에는'swfloader.addEventListener ("myEvent", nextStepFunction);'가 있습니다. 그러나 이제 swf 파일의 exit 버튼을 클릭하면 (플렉스 앱에 포함 된 경우) 아무 일도 발생하지 않습니다. 내가 뭐 잘못 했어요? – Aishwar

+0

이렇게하면 dispatchEvent가 다음과 같이 표시됩니다.이 dispatchEvent (newEvent ("myEvent"), true)) 대신'dispatchEvent (newEvent ("myEvent", true));를 호출하고 the useCapture를 listener를 true로 설정합니다.'addEventListener ("myEventName", handler, true, 0, true);'. 그게 작동하는지 알려주세요. –

+0

@viatroops. 죄송합니다. 오타였습니다. 예, 디스패치 이벤트에 대한 것입니다. 두 번째 addEventListener를 시도 했는데도 작동하지 않았습니다. – Aishwar

0

AS3의 로더 클래스 (flex 스크립트 사용)를 사용하여 수행 할 수 있습니다. 심지어 당신은 그것을 동적으로 할 수 있습니다. 이 문제를 해결하여 myButton 클릭하면

<mx:SWFLoader id="myLoader" width="500" source="swf/kabin42.swf" 
          complete="initSwf();"/> 


private function initNestedAppProps2():void { 
    var loadedMc:MovieClip = MovieClip(myLoader.content); 
    loadedMc= MovieClip(myLoader2.content); 
    //access the button with instance name myButton: 
    loadedMc.myButton.addEventListener(MouseEvent.CLICK, onBtnClick); 
} 

private function onBtnClick(event:MouseEvent):void{ 
    Alert.show("button clicked 2"); 
} 

이 onBtnClick 이벤트 핸들러 메소드가 호출됩니다 MXML에서 .. 난 희망을 ..

관련 문제