quick-cocos2d-x例項之挑戰記憶極限設計文件
1. 來源
QuickV3 sample專案中的2048樣例遊戲,以及最近《最強大腦》娛樂節目。將2048改造成一款挑戰玩家對數字記憶的小遊戲。
微信公眾號:HopToad
2. 邏輯
可選擇簡單,中等,困難三種難度遊戲。
開局UI
每種難度進入後有多個選項如下:
2.1 gridshow
每一塊數字是報錯在全域性變數gridshow 數字中,其中元素是一個cell的table型別。
Cell表型別中有一個塊大小,一個背景,一個數字,另加一個layer(用於實現觸控輸入),一個index(用於除錯,顯示塊),一個輸入控制元件(用於輸入)
全域性變數grid中儲存所有顯示的數字。通過呼叫initGrid函式返回得到。
3. 遊戲開始
點選begin後,顯示如下
3秒後顯示如下
3.1 3秒倒計時到後
取消定時器。
self:removeChild(timelabel)
self:createTipLabel("請填入看到的9個數字")
self:createGridHide();
grid=initGrid(3,3,"點選\n輸入")
self:createGridShowSize(20)
self:createInput()
print("unschedule")
其中createInput函式呼叫addCellTouch函式,該函式實現增加觸控及輸入控制元件新增。
4. 填入數字
4.1 建立輸入控制元件
通過cc.ui.UIInput.new(options)
新建一個輸入控制元件。其中引數 options是 table 型別,可選值如下:
· image:輸入框的影象,可以是影象名或是 display.newScale9Sprite()建立的Sprite9Scale物件。
· imagePressed:輸入狀態時輸入框顯示的影象(可選)
· imageDisabled:禁止狀態時輸入框顯示的影象(可選)
· listener:回撥函式,監聽輸入事件(可選)
· size:輸入框的尺寸,用
· x, y:座標(可選)
我們來看看如何簡單的建立一個輸入控制元件,在MainScene的ctor中加入下面程式碼
1 2 3 4 5 6 7 |
|
4.2 獲取文字
可以使用getText()
方法獲取輸入控制元件的文字內容。
1 |
|
4.3 設定提示資訊
你可以設定輸入欄位預期值的提示資訊,該提示會在輸入欄位為空時顯示,並會在欄位獲得焦點時消失。
假如輸入框期望輸入的是密碼:
1 |
|
4.4 設定顯示文字
你也可以給輸入控制元件設定預設值。比如你想讓玩家給遊戲角色起名稱,在輸入框框中可以預留一個預設名字,使用者可以偷懶不輸入新名字,直接點選確認開始遊戲。
1 |
|
4.5 監聽輸入事件
在新建輸入控制元件的時候,我們可以通過引數傳遞一個輸入事件監聽器給該控制元件,監聽系統輸入法在整個輸入過程中的狀態變化情況。
示例程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
監聽回撥函式有兩個引數
· event,事件型別。它有4個引數:
· began,開始輸入,並不是所有系統都產生這個事件。Player模擬器上,不會有這個事件,只有changed事件。 iOS上,點選輸入框,會彈出系統輸入法介面,began事件產生。
· changed,輸入框內容發生變化。通常用來檢測輸入字串長度以及合法性。
· ended,輸入結束。
· return,從輸入框返回。return事件通常緊跟 ended事件之後。我們點選手機鍵盤上的 return按鈕,或點選輸入控制元件之外的地方,都會關閉輸入框,觸發這兩個事件。一般地,我們可以在 return事件中獲取最終的字串,並作介面切換。
· editbox,生產事件的輸入框例項。
4.6 密碼輸入
在輸入密碼的時候,通常希望用*來顯示輸入的文字。我們可以通過setInputFlag(0)
方法,來啟動密碼輸入模式。
1 2 |
|
5. 提交
是否和隨機產生的相同,如果相同則勝利,否則失敗。
5.2 origingrid
origingrid表中儲存了隨機產生的陣列。
5.3 answergrid
玩家輸入的數字儲存在answergrid儲存玩家返回的數字。
6. 音效設定
6.1 audio
播放音樂、音效
6.2 設定
根據全域性變數設定按鈕的開與關否,如下。其中localMusic是建立button的返回指標。
localMusic:setButtonLabelString("true")
在Quick-Cocos2d-x的v3.x版本中已經移除了選單Menu,使用自己的封裝Button實現選單的功能。
按鈕是一個專案中最基本的東西,因為你不論什麼專案都缺少不了按鈕。它是Quick中常見的UI控制元件。
6.3 UIButton
按鈕Button是基於Node的封裝,可以建立帶圖片的按鈕或文字標籤的按鈕,新增到層Layer上顯示。就像普通按鈕一樣,我們可以很方便的處理按鈕事件,按鈕的狀態。設定背景和顯示文字。
注:UIButton不直接使用
7.按鈕的種類
Quick中有三種Button控制元件,分別是UIPushButton
(按鈕控制元件)、UICheckBoxButton
(CheckButton控制元件)和UICheckBoxButtonGroup
(CheckButton組控制元件)。它們是Quick封裝的按鈕控制元件,原始碼檔案分別位於Quick目錄的/framework/cc/ui/
目錄下UIPushButton.lua/UICheckBoxButton.lua/UICheckBoxButtonGroup.lua
。
6.3.1 事件
Quick-Cocos2d-x中的按鈕控制元件支援如下的事件:
· CLICKED點選按鈕使用UIButton:onButtonClicked(callback)
方法監聽按鈕的點選事件
· PRESSED按下按鈕使用UIButton:onButtonPressed(callback)
方法監聽按鈕的按下事件
· RELEASE釋放按鈕使用UIButton:onButtonRelease(callback)
方法監聽按鈕的釋放事件
· STATE_CHANGED狀態改變(enable <---> disable)使用UIButton:onButtonStateChanged(callback)
方法監聽按鈕的狀態改變事件
Quick中的各種按鈕控制元件都支援上面的事件。我們可以通過響應的方法監聽並處理相應的事件。
7. 燒入真機注意事項
7.1 去掉print函式
蛤蟆這裡反正不去掉就是黑屏一直。
7.2 真機豎屏問題
複製config.json 檔案到 ECLIPSE專案中,修改其中的橫寬比例即可。
7.3 分行語句注意
太長語句進行分行的,要合拼成一行。
7.4 無法載入檔案
修改檔案路徑
直接修改檔案路徑
configFile =device.writablePath.."hxgame.config"
為如下:
configFile = "hxgame.config"
7.5 讀寫檔案
8.4中可解決問題,但是寫入時候無法寫入,通過初始化後重新定義全域性變數configFile=”test.config”,可實現寫入。