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 国际许可协议 进行许可。
评论已关闭