日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【as3】键盘事件

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【as3】键盘事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在AS3中,鍵盤事件是由KeyboardEvent類來處理的,屬于flash.events包里面,有兩種類型的鍵盤事件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP,對于鍵的代碼獲得我們通過keyCode這個屬性

其實鍵盤事件使用起來還是相當方便,下面直接看實例:

建立一個新的AS文件main.as,輸入下面代碼:

package {
??? import flash.display.Sprite;
??? import flash.events.KeyboardEvent;
??? import flash.ui.Keyboard;
??? import flash.events.MouseEvent;
??? public class main extends Sprite {

??????? private function keyEvt(event:KeyboardEvent):void {

??????????? trace(event.keyCode);
??????????? switch (event.keyCode) {
??????????????? case Keyboard.UP :
??????????????????? event.target.y-=10;
??????????????????? break;
??????????????? case Keyboard.DOWN :
??????????????????? event.target.y+=10;
??????????????????? break;
??????????????? case Keyboard.LEFT :
??????????????????? event.target.x-=10;
??????????????????? break;
??????????????? case Keyboard.RIGHT :
??????????????????? event.target.x+=10;
??????????????????? break;
??????????????? default :
??????????????????? break;

??????????? }
??????? }
????????
??????? public function main():void {
??????????? var sp:Sprite=new Sprite();
??????????? sp.graphics.beginFill(0x0000ff);
??????????? sp.graphics.drawRect(200,200,100,100);
??????????? sp.graphics.endFill();
??????????? addChild(sp);
??????????? sp.buttonMode=true;

??????????? sp.addEventListener(KeyboardEvent.KEY_DOWN,keyEvt);
????????????
??????? }
??? }
}

以上代碼主要功能為繪制一個矩形,然后通過鍵盤的方向鍵控制其運動。關于如何將這文檔類運用到FLA文件中去,我這就不啰嗦了。值得注意的是,我這里的sp為一個sprite類型的實例,它的buttonMode也設為了True,因此我們在運行的時候首先先讓這個實例獲得焦點,然后才可以按下方向鍵控制其運動,如果我們不將buttonMode設為true的話,即使我們鼠標點擊后都不可以讓其進行運行,除非我們通過stage.focus=sp來指定當前焦點對象。但是這在實例周圍會有一個焦點的框框,而且鼠標一旦點擊后將會失去焦點,后就再也無法通過鍵盤進行移動。或許說得有點啰嗦,但大家試一試就可以發覺。我一直想找一個去掉這高亮顯示的框框,可惜一直未找到有效的方法,大家如果有好的請告訴我。

在鍵盤事件中除了keyCode還有一個屬性比較實用,就是keyLocation,這個是確定此鍵再鍵盤上的位置,特別是在shift、ctrl、alt上面,由于有左右兩邊,應該此屬性可以告訴你你當前按下的是左邊的還是右邊的。

去掉焦點邊框后并單擊重新獲得焦點代碼示例:09-2-28補

package {
??? import flash.display.Sprite;
??? import flash.events.KeyboardEvent;
??? import flash.ui.Keyboard;
??? import flash.events.MouseEvent;
??? public class main3 extends Sprite {

??????? private function keyEvt(event:KeyboardEvent):void {

??????????? trace(event.keyCode+"|"+event.keyLocation);
??????????? switch (event.keyCode) {
??????????????? case Keyboard.UP :
??????????????????? event.target.y-=10;
??????????????????? break;
??????????????? case Keyboard.DOWN :
??????????????????? event.target.y+=10;
??????????????????? break;
??????????????? case Keyboard.LEFT :
??????????????????? event.target.x-=10;
??????????????????? break;
??????????????? case Keyboard.RIGHT :
??????????????????? event.target.x+=10;
??????????????????? break;
??????????????? default :
??????????????????? break;

??????????? }
??????? }
????????
??????? private function clickFun(evt:MouseEvent):void
??????? {
??????????? stage.focus=Sprite(evt.target);
????????????
??????????? }
????????
??????? public function main3():void {
??????????? var sp:Sprite=new Sprite();
??????????? sp.graphics.beginFill(0x0000ff);
??????????? sp.graphics.drawRect(200,200,100,100);
??????????? sp.graphics.endFill();
??????????? addChild(sp);
??????????? stage.stageFocusRect=false;
??????????? stage.focus=sp;
????????????
??????? sp.addEventListener(KeyboardEvent.KEY_DOWN,keyEvt);
??????????? sp.addEventListener(MouseEvent.CLICK,clickFun);
??????? }
??? }
}

轉載于:https://www.cnblogs.com/YY-1028/archive/2012/04/28/2475485.html

總結

以上是生活随笔為你收集整理的【as3】键盘事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。