Flash Flex學習筆記 14 按鍵捕獲

2021-08-31 10:24:03 字數 3318 閱讀 8602

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

package

privatefunctioninit():void

publicfunctionkeydownhandler(e:keyboardevent):void

if(e.ctrlkey)

if(e.shiftkey)

if(e.altkey)

}

}

}

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

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

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

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

package

privatefunctioninit():void

publicfunctionkeydownhandler(e:keyboardevent):void

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

switch(e.keycode)

if(e.ctrlkey)

}

if(e.shiftkey)

}

}

publicfunctionkeyuphandler(e:keyboardevent):void

}

}

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

package

privatefunctioninit():void

publicfunctionkeydownhandler(e:keyboardevent):void

}

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

//單方向移動

if(keyvaluearr.length==1)

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

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

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

}

if(e.ctrlkey)

}

if(e.shiftkey)

}

}

publicfunctionkeyuphandler(e:keyboardevent):void

}

}

Flash Flex學習筆記 22 濾鏡學習

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

Flash Flex學習筆記 34 彈性運動

動畫中的彈性運動 從視覺效果上接近 物理經典力學中的單擺運動或彈簧 胡克定律f kx 振動 先看下面的模擬演示 規律 小球先從出發點 初始為最左側 向目標點 中心點 加速狂奔,奔的過程中速度越來越大,但加速度越來越小,等經過目標點時,發現速度太大剎不住車 此時速度達到最大值,但加速度減為0 奔過頭了...

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 ...