Flash Flex學習筆記 17 按鍵捕獲

2022-01-31 15:51:36 字數 1703 閱讀 7519

先來看簡單的單個按鍵捕獲:

package 

private function init():void

public function keydownhandler(e:keyboardevent):void

if (e.ctrlkey)

if (e.shiftkey)

if (e.altkey)

} }}

再來看下類似: a + b + c 的這種組合鍵捕獲:

先分析一下過程,比如使用者按下ctrl + a 時,實際上是先按下ctrl鍵,同時觸發keydown事件,然後在ctrl不放的同時,再按下a鍵,再次觸發keydown事件,然後鬆開(觸發keyup事件),這是乙個順序的過程。

思路:在使用者按下鍵且尚未鬆開任何鍵時,可以考慮用乙個資料,把本次按下的所有的鍵值都儲存起來,然後等待使用者鬆開,一旦鬆開,就可以認為本次組合鍵 輸入完成,這時再清空資料,準備下次使用,這樣陣列中儲存的就是使用者按下的組合鍵。

按這個思路把上面的**改進一下:

package 

private function init():void

public function keydownhandler(e:keyboardevent):void

lbl.text="您的按鍵值是:" + e.keycode.tostring()+";按鍵是:" + string.fromcharcode(e.keycode);

switch (e.keycode)

if (e.ctrlkey)

}if (e.shiftkey)

} } public function keyuphandler(e:keyboardevent):void

}}

最後再來看看所謂的"八方向"移動:很多小遊戲都可以用方向鍵控制人物的移動方向,上面的示例中,只能沿水平垂直四個方向移動,如果要做到8方向移動,就要用到組合鍵,仍然在上面的**基本上做些修改:

package 

private function init():void

public function keydownhandler(e:keyboardevent):void

}lbl.text="您的按鍵值是:"+ keyvaluearr.join(',') +";按鍵是:" + keynamearr.join(',');

//單方向移動

if (keyvaluearr.length==1)

} else if (keyvaluearr.length>1) else if (keyvaluearr.indexof(keyboard.up)!=-1 && keyvaluearr.indexof(keyboard.right)!=-1)

else if (keyvaluearr.indexof(keyboard.down)!=-1 && keyvaluearr.indexof(keyboard.right)!=-1)

else if (keyvaluearr.indexof(keyboard.down)!=-1 && keyvaluearr.indexof(keyboard.left)!=-1)

}if (e.ctrlkey)

}if (e.shiftkey)

}} public function keyuphandler(e:keyboardevent):void

}}

Flash Flex學習筆記 17 按鍵捕獲

先來看簡單的單個按鍵捕獲 package private function init void public function keydownhandler e keyboardevent void if e.ctrlkey if e.shiftkey if e.altkey 再來看下類似 a b ...

Flash Flex學習筆記 22 濾鏡學習

silverlight中稱之為 效果 effect 的東東,在flash裡叫 濾鏡 filter 而且flash裡內建的濾鏡要比silverlight豐富很多,幾乎所有物件都有乙個filters的屬性,它是乙個陣列,可以將乙個或多個濾鏡同時應用於某一物件,類似的,如果要去除已經應用的濾鏡效果,只要將...

Flash Flex學習筆記 14 按鍵捕獲

先來看簡單的單個按鍵捕獲 package privatefunctioninit void publicfunctionkeydownhandler e keyboardevent void if e.ctrlkey if e.shiftkey if e.altkey 再來看下類似 a b c 的這...