2013-03-20 4 views
0

xml 데이터가있는 mx : MenuBar 구성 요소를 사용하여 메뉴를 표시합니다. 보시다시피 기본 동작은 처음에는 최상위 메뉴 항목 (예 : 가로 막대)을 클릭하면 팝업 하위 메뉴가 열립니다. 그런 다음 아무 곳이나 클릭하지 않고 가로 메뉴 막대 위에 마우스를 올리면 다른 최상위 메뉴의 팝업 하위 메뉴가 열립니다.mouseOver/rollOver 이벤트 중 mx : MenuBar (Flex)의 팝업 하위 메뉴 열기 방지하는 방법?

이 동작은 일관성이없는 것처럼 보입니다. 팝업 하위 메뉴는 최상위 메뉴 항목 (수평 메뉴 막대)을 클릭하거나 메뉴 막대 항목의 마우스 오버/롤 오버에서만 열어야합니다.

최상위 메뉴 (가로 메뉴 막대)를 클릭 할 때 팝업 메뉴가 열리길 원합니다. 그래서 mouseOver 이벤트 핸들러와 rollOver 이벤트를 추가했습니다. 수평 메뉴 바를 가리키면 어떤 이벤트가 실제로 생성되는지 알지 못합니다. 이벤트 처리기에서 event.preventDefault() 메서드를 호출하여 기본 비헤이비어 (예 : 팝업 하위 메뉴 열기)를 방지했습니다. 그러나 아무것도 작동하지 않습니다. 나는 내가 그것을 통제 할 수없는 것처럼 느꼈다.

아무도 기본 동작을 억제하고 메뉴 모음의 클릭 이벤트에서만 팝업 하위 메뉴를 여는 방법을 말할 수 있습니까?

+0

왜이 동작이 일관성이 없다고 생각하십니까? 이는 Windows 프로그램과 동일한 동작입니다. – HugoLemos

+0

답장을 보내 주셔서 감사합니다. 승인. 우리가 보듯이 메뉴 모음에 기본 동작이있을 수 있습니다. 그러나 메뉴 바의 아무 항목이나 클릭하여 팝업 메뉴를 열려면 팝업 메뉴를 열려면 어떻게해야합니까? – santox

+0

아마도 MenuBar를 확장하는 새로운 actionscript 클래스를 만들고 처리기를 재정의해야 할 것입니다. 예 : http://livedocs.adobe.com/flex/3/html/help.html?content=ascomponents_5.html – HugoLemos

답변

0

"원숭이 패치"를 사용하여 MenuBar 클래스의 동작을 다시 정의 할 수 있습니다. 메소드를 재정의 (override)하는 것은 사적이기 때문에 쉽지 않습니다.

활성 "보기 원본"속성이있는 작업 example입니다. 다시 작성하는

기능은

private function mouseOverHandler(event:MouseEvent):void 
{ 
} 

하나는 새로운 메뉴를 활성화 코드 라인을 삭제해야합니다.

+0

똑똑한 직장! 완전한! 정확히 이것은 내가 원하는 것입니다. 고마워. – santox