在前面已经学过了“触摸事件”,"触摸捕获事件",“按键事件”,此外,quick还有其他几个事件,前面已经列过有这些,
预定义的节点事件:
预定义的层事件:
预定义的菜单事件:
节点事件其实就是节点的几个生命周期,这在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)
function MyScene:onEnter() end function MyScene:onExit() end
帧事件就是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\framework\cocos2dx目录下,再看前面对于这些事件的分类,加速度事件属于层的预定义,所以在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到这掌握的就应该差不多了,可以写些小游戏来耍耍了~不知道大家有没有兴趣自己写个呢,哈哈
quick-cocos2d-x游戏开发【13】——节点生命周期事件,帧事件等其他事件
原文地址:http://blog.csdn.net/w337198302/article/details/39138003