cocos2dx-lua 中的多点触摸
2016-05-31 本文已影响729人
最怕认真
如果有缩放的需求,就必定要用到多点触摸了。先上代码,再来解释。
local layer = cc.Layer:create()
--设置能触摸
layer:setTouchEnabled(true)
local onTouchsEvent = function(eventType, touchs)
--[[
eventType:触摸事件类型.
touchs:多点触摸的数组表,它的大小=n点触摸*3
]]
dump(eventType)
dump(touchs)
if eventType == "began" then
elseif eventType == "moved" then
-- 手指一直触摸着屏幕移动
elseif eventType == "ended" then
-- 手指一直触摸着屏幕放开后
end
end
layer:registerScriptTouchHandler(onTouchsEvent, true)
触摸事件有三种
- 开始
和单点触摸一个意思,就是有新的触摸点在屏幕上,就会传入这个触摸点
从打印的结果可以看出touchs的结构是X,Y,ID,id=0是第一个触摸点
begin2.pngid = 1是第二个触摸点
- 移动
当有触摸点移动的时候,会打印出所有的触摸点
你可以在这里做逻辑,先计算出有多少个点,如果有两个以上,就做缩放,如果只有一个就可以做拖动地图或者拖动物品的操作
- 结束
和开始一样,会一个一个的打印
对于点的id确定,经过测试是从最小的开始,什么意思呢
比如我先依次往屏幕上放四个手指ABCD,依次对应的id是0123,当我把BC离开屏幕后,再往屏幕按下一个手指,发现这个手指对应的id变成了1,由此可见,为触摸点分配id的策略应该是从0往无穷遍历,当这个id没被使用,则赋给新加入的触摸点