轉自:http://www.it165.net/pro/html/201409/21681.html
在前面已經學過了“觸摸事件”,"觸摸捕獲事件",“按鍵事件”,此外,quick還有其他幾個事件,前面已經列過有這些,
預定義的節點事件:
cc.NODE_EVENT - enter, exit 等事件cc.NODE_ENTER_FRAME_EVENT - 幀事件cc.NODE_TOUCH_EVENT - 觸摸事件cc.NODE_TOUCH_CAPTURE_EVENT - 捕獲觸摸事件
預定義的層事件:
cc.ACCELERATE_EVENT - 重力感應事件cc.KEYPAD_EVENT - 硬件按鍵事件
預定義的菜單事件:
cc.MENU_ITEM_CLICKED_EVENT - CCMenu 菜單項點擊事件
這裏我就簡單拿兩個來說下,掌握起來都很容易。先看這個cc.NODE_EVENT。
節點事件其實就是節點的幾個生命週期,這在cocos2dx c++中一定有所瞭解。直接看代碼吧
local layer = display.newLayer() self:addChild(layer) layer:addNodeEventListener(cc.NODE_EVENT, function (event) if event.name == "enter" then print("enter") elseif event.name == "exit" then print("exit") elseif event.name == "cleanup" then print("cleanup") elseif event.name == "enterTransitionFinish" then print("enterTransitionFinish") elseif event.name == "exitTransitionStart" then print("exitTransitionStart") end end)
cc.NODE_EVENT可以響應一個節點的onenter,onexit,cleanup,exitTransitionStart,enterTransitionFinish這些事件,當然如果不使用添加監聽的方式,我們也可以重寫相應的函數,
function MyScene:onEnter() end function MyScene:onExit() end
接着來看這個 cc.NODE_ENTER_FRAME_EVENT 幀事件
幀事件就是update定時器,每一幀調用,如果要使用,除了要添加監聽,還需要開啓update定時器,像這樣的代碼,
local layer = display.newLayer() self:addChild(layer) layer:scheduleUpdate() layer:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt) print(dt) end)
對於其他幾個事件就不多介紹了,來說說怎麼掌握他們。
主要的問題是對於回調函數中的參數變量,例如加速度事件,event後面可以點出哪些呢,我是這麼確定的,
因爲在2.2.3版本開始,事件分發機制就重新制作了,進入 quick-cocos2d-x-2.2.5 rameworkcocos2dx目錄下,再看前面對於這些事件的分類,加速度事件屬於層的預定義,所以在LayerEx.lua文件中,觸屏,幀事件等屬於節點預定義,所以就在NodeEx.lua文件中。
然後打開這些文件就可以發現它們有哪些可用字段了,例如加速度事件,打開LayerEx.lua文件,可以看到這樣的代碼,
function Layer:addAccelerateEventListener(listener) PRINT_DEPRECATED("Layer.addAccelerateEventListener() is deprecated, please use Layer.addNodeEventListener()") self:addNodeEventListener(c.ACCELERATE_EVENT, function(event) listener(event.x, event.y, event.z, event.timestamp) end) end
listener裏面的這些就是quick提供的了,這樣一來就可以添加事件監聽了,並在回調函數中寫相應的事件了。這些是被摒棄的寫法了,但裏面都提供了使用addNodeEventListener方式,所以。。。
以上就是全部事件的介紹了。我覺得quick到這掌握的就應該差不多了,可以寫些小遊戲來耍耍了~不知道大家有沒有興趣自己寫個呢,哈哈