先來看簡單的單個按鍵捕獲:
packageprivate 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事件),這是乙個順序的過程。
思路:在使用者按下鍵且尚未鬆開任何鍵時,可以考慮用乙個資料,把本次按下的所有的鍵值都儲存起來,然後等待使用者鬆開,一旦鬆開,就可以認為本次組合鍵 輸入完成,這時再清空資料,準備下次使用,這樣陣列中儲存的就是使用者按下的組合鍵。
按這個思路把上面的**改進一下:
packageprivate 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方向移動,就要用到組合鍵,仍然在上面的**基本上做些修改:
packageprivate 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 的這...