2010-01-21 3 views
0

중첩 된보기 및 팝업 창이 많은 플렉스 응용 프로그램이 있습니다. 최상위 수준의 응용 프로그램에서 모든 변경 이벤트를 catch하고 싶습니다. 모든 변경 사항을 사용자에게 알리기 만하면됩니다. 뭔가 (내 애플 리케이션에서 이해가 날 믿어). 왜 ..Flex 3 이벤트 버블 링이 false로 설정되었습니다. 거품을 어떻게 만드시겠습니까?

private function init():void { 
    this.addEventListener(flash.events.Event.CHANGE, function f():void {...}) 
} 

을했지만 작동하지 않습니다

지금, 나는이 같은 응용 프로그램의 creationComplete 처리기에서 이벤트 리스너를 추가하려고? 문서에서 CHANGE 이벤트의 버블 링 이벤트가 false로 설정되어 디스패치됩니다. 어떻게 바꿀 수 있습니까? 내 목표를 달성하기위한 다른 방법이 있습니까? 감사합니다.

답변

1

응용 프로그램 대신 SystemManager에서 이벤트를 수신 해 봅니다. 필자가 이해하는 한, SystemManager는 표시 목록 맨 위에 앉아 응용 프로그램, 팝업 및 기타 UI 엔티티를 하위 항목으로 추가합니다.

Flex 3 이하 버전에서는 Application.application.systemManager를 통해 검색 할 수 있습니다. 디파의 블로그에 더 SystemManager가 읽어

: http://iamdeepa.com/blog/?p=11

0

나는 또한 내가 대신 그들의 용기 (부모)에 대한 변경 이벤트를 수신하고자하는 텍스트 영역 컨트롤 그룹에 문제가 있어요.

내가 마지막으로 수행 한 작업은 TextArea 클래스를 확장하고 change 이벤트에 대한 수신기를 만드는 것이 었습니다. 청취자에게서 나는 버블 수있는 커스텀 이벤트를 보낸다.

public class BubblingTextArea extends TextArea 
{ 
    public function BubblingTextArea() 
    { 
     super(); 
     addEventListener(TextOperationEvent.CHANGE, changeHandler); 
    } 

    private function changeHandler(event:TextOperationEvent):void 
    { 
     dispatchEvent(new ChangeBubbleEvent(ChangeBubbleEvent.BUBBLE_CHANGE)); 
    } 
} 

사용자 정의 이벤트 :

public class ChangeBubbleEvent extends Event 
{ 
    public static const BUBBLE_CHANGE:String = "bubbleChange"; 

    public function ChangeBubbleEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) 
    { 
     super(type, bubbles, cancelable); 
    } 
} 

나는 여전히 Flex와 AS3 자신에게 아주 새로운 오전부터 사람이 더 우아한 해결책을 제공 할 수 있습니다 확신합니다.

+0

사용자 지정 이벤트가 필요하지 않으며 거품이 true로 설정된 원래 이벤트를 다시 디스패치하면됩니다. 새로운 ChangeBubbleEvent 대신 new TextOperationEvent (event.type, true, true, event.operation)를 말하십시오. –

+0

나는 그것을 시도하고 그것은 나에게 오류를 줬다. TextArea 구성 요소 (및 기타 몇몇 요소)는 구현시 이벤트 버블 링을 명시 적으로 중지합니다. – immortalBob

0

내가 아는 한 PopUps는 응용 프로그램의 기본 displayList 외부에서 발생하기 때문에 거품이 보이지 않는 것 같습니다. 이 경우 팝업에 리스너를 수동으로 추가해야합니다. 플래시 변경 이벤트 는 문서에 따라 거품을 수행 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/Event.html#CHANGE

내가 개인적으로 같은 RobotLegs 또는 파슬리와 같은 프레임 워크를 사용하고 싶다.

기본적인 아이디어는 각보기와 팝업이 중개자를 얻는다는 것입니다. 중재자의 임무는보기와 명령/모델간에 의사 소통하는 것입니다. 이러한 중재자는보기 및보기의 구성 요소를 직접들을 수 있습니다.

관련 문제