2010-05-31 3 views
0

몇 가지 초보자 테스트를하고 있으므로 키보드 이벤트를 캡처하여 사각형을 이동하기로했습니다. 그러나 나는 원하는 결과를 얻지 못한다. TextArea 상자를 클릭하지 않으면 이벤트 키 코드를 캡처 할 수 없습니다. 그 후, 모두 꽤 잘갑니다.플렉스/액션 스크립트에서 이벤트를 관리하는 데 문제가 있습니다.

Linux에서 Eclipse 3.3 + Flex 3.0을 사용하고 있습니다.

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application 
xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute" 
enterFrame="enterFrame(event)" 
keyDown="onKeyDown(event)"> 

<mx:TextArea id="myText" x="200" y="200" width="100" height="100" /> 

<mx:Canvas id="myCanvas" x="0" y="0" width="100" height="100" /> 

<mx:Script> 
    <![CDATA[ 
    public var clearColor : uint = 0xFF456798; 
    public var myPoint : Point = new Point(0,0); 

    public function enterFrame(event:Event):void 
    { 
    myCanvas.graphics.clear(); 
    myCanvas.graphics.beginFill(0xFF344ff0); 
    myCanvas.graphics.drawRect(myPoint.x,myPoint.y,40,40); 
    myCanvas.graphics.endFill(); 
    } 

    public function onKeyDown(event:KeyboardEvent):void 
    { 
    myText.text = "Keycode is: " + event.keyCode + "\n"; 

    switch(event.keyCode) 
    { 
    case 37: //Left 
     myPoint.x -= 1; 
     break; 
    case 38: //Up 
     myPoint.y -= 1; 
     break; 
    case 39: //Right 
     myPoint.x += 1; 
     break; 
    case 40: //Down 
     myPoint.y += 1; 
     break; 
    } 
    } 
    ]]> 
</mx:Script> 

</mx:Application> 

답변

1

키보드 이벤트는 현재 포커스와 모든 부모는 DisplayObject에 파견 :

여기 내 코드입니다. KeyboardEvent를 얻는 가장 확실한 방법은 처리기를 스테이지에 등록하는 것입니다. 그러나 포커스 나 다른 형식의 컨텍스트를 인식하지 못하는 KeyboardEvents를 처리하면 일반적으로 이상한 동작이 발생하므로이를 고려해야합니다.

greetz
back2dos

관련 문제