Flash AS 實例進階 鍵值捕獲實現(xiàn)代碼

Flash 動畫的交互性是通過鼠標和鍵盤進行,前面的章節(jié)講的都是鼠標控制,本節(jié)開始接觸鍵盤控制,響應鍵盤的方法有幾種,但歸根結底可以用一句通俗的話概括,就是程序運行中,發(fā)現(xiàn)哪個鍵被按下了,并執(zhí)行相應的動作,這里介紹的是通過判斷獲取的鍵控代碼值來實現(xiàn)鍵盤控制,還是老套路,使用一個這樣的實例,這是去年作的一個練習, 就叫距離產(chǎn)生美吧。
基本思路
?、?主場景中放置 2 個保持一定距離的 MC 。
?、谠俜胖靡粋€空 MC 用來寫腳本,當然,也可以寫到前面的 MC 實例上,這樣是便于閱讀和理解腳本。
?、郯聪?uarr;↓←→鍵兩個 MC 都向同方向運動,并始終保持固定的距離和前后關系,還要保持朝向和移動的方向的一致
?、茉O定邊線,不向線外運動。
⑤松開按鍵,兩 MC 保持原始方向。
新知識點
onClipEvent (keyDown);// 影片的事件處理函數(shù)。觸發(fā)的是按下按鍵事件 。
onClipEvent (keyUp) ; // 觸發(fā)的是松開按鍵事件 。
Key.getCode() // 獲得鍵值。
本實例只用到了 4 個鍵值,但為全面了解,將一個別人所寫最新教程的鍵控代碼值和鍵常量表復制下來。
圖 2 — 2 鍵控代碼
圖 2 — 3 鍵常量
實例說明
好象沒什么需要說明,就是 QG 追 QM ,總也追不到。
編寫動作腳本
?、僭诳?MC 上輸入:
onClipEvent (keyDown) {// 按鍵事件觸發(fā)
s = 1;
if (Key.getCode() == 37) {// 條件為獲取的鍵值為“ 37 ” 即“ ←”的鍵值。
_root.qa.play();
_root.qb.play();
_root.qa._x -= s;
_root.qa._xscale = -_xscale;// 令MC“ qa ”水平翻轉(zhuǎn)
_root.qb._xscale = _xscale;
_root.qb._x = _root.qa._x-80;// 令MC“ qb ”水平位置到“ qa ”左邊
}
if (Key.getCode() == 39) {// 條件為獲取的鍵值為“ 39 ” 即“ →”的鍵值。
_root.qa._xscale = _xscale;
_root.qa.play();
_root.qb.play();
_root.qa._x += s;
_root.qb._xscale = -_xscale; // 令MC“ qb ”水平翻轉(zhuǎn)
_root.qb._x = _root.qa._x+80; 令MC“ qb ”水平位置到“ qa ”右邊
}
if (Key.getCode() == 38) {// 條件為獲取的鍵值為“ 38 ” 即“ ↑”的鍵值。
_root.qa._y -= s*2;
_root.qb._y = _root.qa._y;
}
if (Key.getCode() == 40) {// 條件為獲取的鍵值為“ 40 ” 即“ ↓”的鍵值。
_root.qa._y += s*2;
_root.qb._y = _root.qa._y;
}
if (_root.qa._x<100) {// 以下 4 條語句是限制邊界
_root.qa._x = 100;
}
if (_root.qa._x>430) {
_root.qa._x = 430;
}
if (_root.qa._y<50) {
_root.qa._y = 50;
}
if (_root.qa._y>320) {
_root.qa._y = 320;
}
}
onClipEvent (keyUp) {// 釋放鍵觸發(fā)
_root.qa.stop();
_root.qb.stop();
if (_root.qa._x<_root.qb._x) {// 依據(jù)兩個MC“qa”和“qb”的左右位置,確定翻轉(zhuǎn)與否,而保證是相向而立。
_root.qa._xscale = _xscale;
_root.qb._xscale = _xscale;
} else {
_root.qa._xscale = -_xscale;
_root.qb._xscale = -_xscale;
}
}
要點分析
?、?Key.getCode() == 37 可以寫成 Key.getCode() == Key.LEFT ,“ Key.LEFT ”是與左箭頭鍵的鍵控代碼值 (37) 關聯(lián)的常量,初學或需給別人看,用這樣方式寫好,直觀明了,而直接用鍵值寫能省點勁,我是那里省力寫 這里費力說。
②這里 onClipEvent (keyDown) 結合 Key.getCode() == () 的腳本,事件觸發(fā)是主體,而獲取鍵值只是確定該有啥動作的的條件,不要以為 if (Key.getCode() == 37) { _root.qa.play(); }就可以有 _root.qa.play(); 的動作。
小結
響應鍵盤是游戲和課件中普遍應用的,什么物體運動呀 飛行呀,開炮放槍的,都需要鍵盤來實現(xiàn)人機交互, 根據(jù)學習進度的要求,本節(jié)只介紹了通過MC的按鍵事件觸發(fā)和鍵值捕獲的方法來實現(xiàn)鍵盤控制,也是比較簡單實用的方法,咱們是不用招法多,好用就中。
課后練習
大改源文件,讓一個Q滿場亂跑,另一個Q由鍵盤控制去追,追上之后出現(xiàn)一個新畫面,提示:沒準轍的瞎跑當然要用隨機函數(shù),追上的語句就用我們學過的知識 用X.Y坐標值的差來判斷, MC 的碰撞方法或碰撞檢測的組件大家還沒學 , 我也不會。范例效果:
相關文章
- flash cs6想要實現(xiàn)鼠標跟隨效果?該怎么制作呢?今天我們就來看看使用as2.0實現(xiàn)鼠標跟隨效果的教程,需要的朋友可以參考下2019-05-19
- Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來輸入文本,該怎么使用代碼輸入文本呢?請看下文詳細的教程,需要的朋友2018-03-11
- flash as3.0抽象類怎么定義? as3.0中有很多抽象類,該怎么定義抽象類和抽象方法呢?下面我們就來看看簡單的例子,需要的朋友可以參考下http://www.dbjr.com.cn/softs/408402.2018-02-28
flash cs6中怎么使用ActionScript3.0?
flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2018-01-25- 本教程給大家分享一個Flash小教程,教大家在Flash CS6中怎么實現(xiàn)鼠標點擊決定圖像位置?方法很簡單,感興趣的朋友歡迎前來一起分享學習2018-01-12
- 本教程教腳本之家的ActionScript教程學習者在Flash中如何用代碼將圖片放在自己想要的舞臺位置,教程講解的詳細,感興趣的朋友歡迎前來分享學習2017-11-20
在Flash CS6中使用with函數(shù)繪制背景圖教程
本教程教腳本之家的ActionScript教程學習者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細,方法也不難,非常適合Flash新手入門學習2017-11-18Flash怎么設置元件坐標?flash使用代碼設置元件的坐標的教程
Flash怎么設置元件坐標?flash中導如的元件需要添加坐標,該怎么定位元件坐標呢?下面我們就來看看flash使用代碼設置元件的坐標的教程,需要的朋友可以參考下2017-10-11- Flash怎么制作來回搖擺的花朵的動畫?Flash中想要給花朵制作一段搖擺的動畫效果,該怎么制作呢?下面我們就來看看詳細的教程,很簡單,需要的朋友可以參考下2017-05-23
- Flash怎么制作流動七彩色的文字?想要讓文字動起來,該怎么使用flash給文字制作一個流動七彩色的動畫呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2017-04-23