cocos2dx-lua 中的多点触摸

如果有缩放的需求,就必定要用到多点触摸了。先上代码,再来解释。

    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)

触摸事件有三种

  • 开始
    和单点触摸一个意思,就是有新的触摸点在屏幕上,就会传入这个触摸点
cocos2dx-lua 中的多点触摸_第1张图片
begin.png

从打印的结果可以看出touchs的结构是X,Y,ID,id=0是第一个触摸点

begin2.png

id = 1是第二个触摸点

  • 移动
    当有触摸点移动的时候,会打印出所有的触摸点
cocos2dx-lua 中的多点触摸_第2张图片
move.png

你可以在这里做逻辑,先计算出有多少个点,如果有两个以上,就做缩放,如果只有一个就可以做拖动地图或者拖动物品的操作

  • 结束
    和开始一样,会一个一个的打印
end.png

对于点的id确定,经过测试是从最小的开始,什么意思呢
比如我先依次往屏幕上放四个手指ABCD,依次对应的id是0123,当我把BC离开屏幕后,再往屏幕按下一个手指,发现这个手指对应的id变成了1,由此可见,为触摸点分配id的策略应该是从0往无穷遍历,当这个id没被使用,则赋给新加入的触摸点

你可能感兴趣的:(cocos2dx-lua 中的多点触摸)