2012年8月11日 星期六

[AS3.0學習筆記]鍵盤事件---接蘋果小遊戲

以前企編過的一個鍵盤事件範例,最近在整理資料,分享一下!

效果預覽:

程式學習:

  • 基本邏輯是點擊開始按鈕之後,開始按鈕消失,並且進行遊戲。
  • 進行遊戲時,利用「Timer」物件呼叫元件庫的蘋果,並且設定隨機位置落下。
  • 如果沒接到蘋果,當蘋果碰到地面就破掉;如果接到則算入分數。
  • 如果漏掉 5 顆蘋果則算失敗。



鍵盤事件

當按下鍵盤某按鍵時,執行某個函式。

stage.addEventListener(KeyboardEvent.KEY_DOWN,aaa); function aaa(e:KeyboardEvent) { theTEXT.text = e.keyCode.toString(); }

當然除了編碼,針對一些特珠按鍵,例如「Space」、「Enter」等,也有另一種寫法:

if (e.keyCode == Keyboard.SPACE) { theTEXT.text = e.keyCode.toString(); }

常用的有:「Keyboard.SPACE」、「Keyboard.ENTER」、「Keyboard.RIGHT」、「Keyboard.LEFT」、「Keyboard.UP」、「Keyboard.DOWN」

原始檔下載:

49 則留言:

  1. 請問~如果想寫分數累積到例如100分 後結束遊戲的判斷是和迴圈怎麼寫?

    回覆刪除
  2. 其實累積分數不必用到迴圈,只要設定一個數字類型變數,當接到蘋果時,使其增加,例如「score+=10」,並且寫一個判斷式即可,例如「if(score==100){跳至破觀畫面的影格}」即可~^^

    回覆刪除
  3. 你好!請問這個flash原始檔案是甚麼版本呢?下載下來結果因為檔案錯誤打不開><

    回覆刪除
  4. 哈囉~~我已經降存為CS5版本囉~~^^,您可以重新下載一次試試,不過軟體版本至少記得要CS5以上才行喔~~

    回覆刪除
  5. TypeError: Error #1010: 詞彙未定義且沒有屬性。
    at _fla::MainTimeline/drop()

    不好意思 我下載你的範本修改一些程式 但跑出這段話 是什麼意思??

    回覆刪除
    回覆
    1. 應該是在「drop」函式(function)裡面有變數出了問題,抓不到變數之類的錯誤~^^

      刪除
  6. 網誌管理員已經移除這則留言。

    回覆刪除
  7. 恩 有成功找倒錯誤了 感謝 但如果我想在gameover時 做一顆按鈕 可以切換到另外一個場景 程式要怎麼寫呢?? 程式部分還不是太熟><"

    回覆刪除
  8. 哈哈~~留言不能貼圖~~不過我把程式改了一下,您可以看一下:
    http://www.flickr.com/photos/56226586@N04/8361806470/in/photostream
    希望有幫到您~~^^

    回覆刪除
  9. 感謝板大的用心講解 只是我在後面是寫{gotoAndPlay(1,"s1");
    } 跳到另外一個場景

    但跑出下面這個

    動畫 1152: 已繼承定義 flash.display:DisplayObject.z 於 namespace public 中發生衝突。
    不知道是哪裡出錯><"

    回覆刪除
  10. 大大是否可以把原始檔寄給我看一下??
    ms4342001@gmail.com^^

    回覆刪除
  11. 請問我能參考下原始檔嗎?

    回覆刪除
    回覆
    1. 點擊一下上方的廣告欄位就可以下載原始檔唷~~^^~不好意思,多一個步驟~

      刪除
    2. 只看到廣到耶0.0

      刪除
    3. 要點擊廣告欄位下方有兩個選項~~^^

      刪除
  12. 回覆
    1. ^^~~哈哈~~不好意思,讓您多一道手續囉~~
      裡面as寫的比較基本~如果需要什麼功能,歡迎留言分享囉~~

      刪除
  13. 請問裡面bb是什麼?

    可以把程式碼 標一下註解 可以嗎><

    回覆刪除
  14. 請問程式碼bb是啥

    可以把程式碼 用一下註記嗎
    小弟對flash還不熟西

    回覆刪除
    回覆
    1. 哈哈~~這是很早期寫的啦~~裡面的bb只是一個布林值,判斷遊戲是否正在進行中,如果在進行中,時間就要繼續跑~不然就暫停時間~
      不過這幾天忙翻了,需要註解的話,可能要等下週二以後囉~~@@~~

      刪除
  15. 不好意思 因為 我最近在寫一個類似接蘋果遊戲 但東西就是無法接到
    所以我才需要更了解接蘋果遊戲的程式碼

    回覆刪除
  16. 因為我最近在弄一個類似接蘋果遊戲的
    但東西就是無法接到
    所以才需要了解接蘋果遊戲程式碼

    回覆刪除
  17. 哈囉,建議您可以用enterframe或setinterval持續偵測是否有碰撞hittest到唷

    回覆刪除
  18. 版大請問要怎麼在轉場之後重新執行程式?

    回覆刪除
    回覆
    1. 一般來說~會在一開始把一些初始化的設定值寫在一個function裡,隨時就可以呼叫這個function囉~

      刪除
  19. 版大請問跳到新場景,要增加多一項水果,應該如何寫比較好

    回覆刪除
    回覆
    1. 比較建議大大可以多寫一祖「產生水果落下」的function,然後設定讓它隨機產生哪一個水果落下

      可是如果一開始這個專案就有確定要逐關增加水果或是難度(例如可能有不能接的東西,接到會扣分),其實一開始在定義一些相關function的時候,就可以先行設定好,後面會比較方便~^^

      刪除
  20. 您好
    借下載參考您的範例ㄛ!
    感謝

    回覆刪除
  21. 不好意思,我沒辦法看到廣告點選下載耶!
    方便給我程式碼到我信箱嗎?
    kose0721@gmail.com

    謝謝~

    回覆刪除
  22. 哈囉 我也沒辦法看到廣告點選下載耶
    可以傳給我嗎
    powei60612@yahoo.com.tw

    回覆刪除
  23. 您好><我也沒辦法看到廣告點選下載耶
    可以傳給我嗎
    非常的感激:D
    nancy091584@gmail.com

    回覆刪除
  24. 版主你好 我也是看不見廣告
    可否傳給我呢?
    謝謝你:D
    chengqianwas@gmail.com

    回覆刪除
  25. 你好~~~我是學生,看到你這篇教學真好~
    可是我也看不到廣告,可以發給我嗎??
    cobbage@126.com

    回覆刪除
  26. 您好,目前想參考您使用的AS3的技巧,不知道是否可跟您索取原始檔作為範例,
    但無法看到廣告點擊,可否能夠麻煩您寄送給我呢?

    謝謝您

    Kin

    回覆刪除
    回覆
    1. 在這邊唷~~請服用^^
      https://dl.dropboxusercontent.com/u/18499002/download/fla/apple_catch.fla

      刪除
  27. 版主你好~
    可是我也看不到廣告點選下載
    可以傳程式碼給我嗎??
    bestman0826@gmail.com

    回覆刪除
    回覆
    1. 已傳囉~~不過flash已經被淘汰了~還是學習animate比較有未來唷~~^^

      刪除
  28. 版主~~你好~~
    我看不到廣告點選下載
    可以傳程式碼給我ㄇ??
    k13569j@yahoo.com.tw

    回覆刪除
    回覆
    1. 哈囉~~已開啟下載囉~~(廣告拿掉了~^^)

      刪除
  29. 您好請問
    假設我扣除現有GAMEOVER事件
    改成縮短隨機產生蘋果的時間
    使它掉落中的蘋果數量增加
    這時需要一個計時器
    時間倒數30秒後立即結束遊戲並結算總分
    請問此事件應該要如何修改?

    回覆刪除
    回覆
    1. 您好,計時器部份可用timerevent唷!

      刪除
  30. 版主您好~~~
    請問~假設想在遊戲最後加上按鈕,讓程式重新執行...像圖片裡的寫法是合適的嗎?
    https://drp.io/i/NJthh27uW
    想讓它自己載入自己...
    電腦上看貌似成功,可是發布成網頁上傳後,按鈕就失效了...
    請問應該要怎麼修改呢?~><
    謝謝您。

    回覆刪除
    回覆
    1. As3.0 好像沒有proloader這物件耶!哈,我不認識它(太久沒碰flash了)

      刪除