2012-03-02 4 views
0

Ctrl + z, Ctrl + Y를 통해 수행되는 실행 취소/다시 실행 기능이있는 TextArea가 있습니다. 내 앱은 소프트 키보드에 cntrl이없는 모바일 앱이므로 키 누르기를 시뮬레이트하는 실행 취소 및 다시 실행 버튼을 만들고 싶습니다. Flex에서 키를 어떻게 시뮬레이트합니까?플렉스 - 키 누름을 시뮬레이트하는 버튼

당신은 그래서 당신은 다음과 같은 것을 할 수 CTRL-Z (키 코드 26)와 CTRL-Y (키 코드 25) 시뮬레이션하는 KeyboardEvent입니다 파견 KeyboardEvents을 포함하여 원하는 이벤트 전달할 수 있습니다

답변

1

:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" creationComplete="creationCompleteHandler(event)"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      protected function creationCompleteHandler(event:FlexEvent):void 
      { 
       this.addEventListener(KeyboardEvent.KEY_UP, keyHandler); 
      } 

      protected function clickHandler(event:MouseEvent):void 
      { 
       this.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 26, 26, 0, true)); 
      } 

      protected function keyHandler(e:KeyboardEvent):void 
      { 
       trace(e.charCode, e.keyCode, e.ctrlKey); 
      } 

     ]]> 
    </mx:Script> 
    <mx:Button id="undoButton" label="undo" click="clickHandler(event)" /> 
</mx:Application> 

을 줄 this.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 26, 26, 0, true));은 KEY_UP 이벤트를 전달하는 키이며, 다음 두 args는 거품과 취소 가능이며, charCode와 keyCode는 각각 26이고, keyLocation은 0이고, ctrlKey는 0입니다.).

+0

나는 이것을 시도했지만 버튼을 클릭했지만 텍스트가 실행 취소되지 않으면 26 26 사실을 추적합니다. 나는 당신의 모범이 분명하고 의미있는 것처럼 간단한 것을 놓치고 있다고 확신합니다. 어떤 생각일까요? – RapsFan1981

+0

KeyBoardEvents를 수신하는 구성 요소가 이벤트를 보내는 단추보다 낮을 수 있습니다. Flash 및 Flex 이벤트는 DisplayList를 위로 올려 버리면 체인 위로 올라가는 모든 구성 요소에서들을 수 있거나 구성 요소에서 이벤트를 명시 적으로 수신 할 수 있습니다. 텍스트 영역은 사용자가 작성한 항목을 실행 취소/다시 실행합니까, 아니면 제 3의 작업입니까? – kreek

+0

사실은 스파크 TextArea – RapsFan1981

관련 문제