cocos lua 按钮监听事件获取触摸点
在cocos lua 中,我们实现按钮的监听事件一般这样使用
local function btnOnClick( sender, eventType ) end btn:addTouchEventListener(btnOnClick)
eventType有四种:
- TOUCH_EVENT_BEGAN --触摸开始
- TOUCH_EVENT_MOVED --触摸移动
- TOUCH_EVENT_ENDED --触摸结束
- TOUCH_EVENT_CANCELED --触摸取消
而想要获取按钮触摸的点坐标,之前一直以为要使用最基础的触摸实现
local listener = cc.EventListenerTouchOneByOne:create() listener:registerScriptHandler(onTouchBegin,cc.Handler.EVENT_TOUCH_BEGAN ) listener:registerScriptHandler(onTouchMove,cc.Handler.EVENT_TOUCH_MOVED) listener:registerScriptHandler(onTouch,cc.Handler.EVENT_TOUCH_ENDED ) local eventDispatcher = node:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listener, node)
没想到cocos其实提供了三个内部函数:
- sender:getTouchBeganPosition() --触摸开始的坐标
- sender:getTouchMovePosition() --触摸移动的坐标
- sender:getTouchEndPosition() --触摸结束的坐标
非常好用,一般与之配合使用的场景经常是判断点击是否在控件上,可以这样操作:
local location = sender:getTouchMovePosition() --获取触摸点坐标 local locationInNode = sender:convertToNodeSpace(location) --转换到目标节点的坐标系下 local my_pos = sender:getContentSize() --获取目标节点控件大小 my_pos .x = 0 my_pos .y = 0 if cc.rectContainsPoint(my_pos , locationInNode) then --比较是否在其中 end
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭