[英]Trouble managing events in Flex/actionscript
我正在做一些新手測試,所以我決定捕獲鍵盤事件以移動一個矩形。 但是我沒有得到理想的結果。 除非單擊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>
鍵盤事件僅分派給具有當前焦點的DisplayObject及其所有父對象。 獲取KeyboardEvent的最可靠方法是將處理程序注冊到階段。 但是,在不注意焦點或任何其他形式的上下文的情況下處理KeyboardEvents通常會導致奇怪的行為,因此您必須對此進行一些思考。
格里茨
back2dos
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.