節點生命週期事件,幀事件等其他事件

轉自: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到這掌握的就應該差不多了,可以寫些小遊戲來耍耍了~不知道大家有沒有興趣自己寫個呢,哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章