2012-09-06 5 views
0

제목에 설명하는 방법을 알지 못했지만 응용 프로그램의 다른 textArea에 텍스트를 생성하는 textArea가 있습니다.다른 textArea에서 생성 된 AS3의 textArea에서 텍스트를 삭제하는 방법

gallery.txtArea1.addEventListener(TextEvent.TEXT_INPUT, displayEvent); 

function displayEvent(event:TextEvent):void { 
     picArea1.text = gallery.txtArea1.text + event.text; 
} 

을하지만 동적 텍스트 영역 picArea1에서 텍스트를 삭제하고자 할 때, 그 키 코드를 캡처하지 않습니다 : 그것은 잘 텍스트를 생성합니다. 그래서 특별히 다른 이벤트 리스너를 추가했습니다.

gallery.txtArea1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed); 

function onKeyPressed(event:KeyboardEvent):void { 
     if (event.keyCode == Keyboard.DELETE) { 
      picArea1.text = gallery.txtArea1.text; 
     } 
} 

새로 고침 만하면됩니다. 그러나 그것은 삭제시에 선택하지 않습니다. 내가 뭘 놓치고 있니?

+0

이 두 번째 리스너 대신 KEY_UP를 사용해보십시오 :

picArea1.text = gallery.txtArea1.text + event.text; 

그래서이 내 마지막 기능입니다. – BadFeelingAboutThis

답변

0

확인. 이상한 문제. 내가 변경하는 경우 :

event.keyCode == Keyboard.DELETE 

event.keyCode == 8 

에이 작업을 시작했다. 키보드 클래스와 모든 것을 가져 왔기 때문에 이것이 왜 설정되어 있는지 알 수 없습니다. 문자열을 삭제 한 마지막 문자 만 얻으려면 약간의 속임수를 써야했습니다. 전체 문자열을 가져 와서 마지막 문자를 추가 한 다음 전체를 다시 샘플링 한 후 다시 수행했기 때문에 코드를 삭제 한 방법이 있습니다.

gallery.txtArea1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed); 

function onKeyPressed(event:KeyboardEvent):void { 
     if (event.keyCode == 8) { 
      var newString:String = gallery.txtArea1.text; 
      picArea1.text = newString.substring(0, newString.length - 1); 
     } 

} 
1

TextEvent.TEXT_INPUT 메서드는 텍스트 입력에 추가하지 않는 항목에 디스패치하지 않습니다.

대신 키 수신기를 추가하여 올바른 방향으로 나아갔습니다. KEY_DOWN 대신 KEY_UP을 사용하면 예상대로 작동합니다.

이유는 KEY_DOWN은 텍스트 입력이 시스템에 의해 변경되기 전에 전달/처리되기 때문입니다. 또는 Timer을 사용하여 삭제/백 스페이스 키를 눌러 여러 문자를 지울 때 즉석 결과를 원할 경우 KEY_DOWN 및 KEY_UP 이벤트 사이를 업데이트 할 수 있습니다.

+0

Naw, KEY_UP을 할 때 작동하지 않습니다. 나는 무슨 일이 일어나고 있는지 모른다. –

관련 문제