美文网首页cocos2d-Luacocos2d
cocos2dx-lua 中的多点触摸

cocos2dx-lua 中的多点触摸

作者: 最怕认真 | 来源:发表于2016-05-31 11:11 被阅读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)
    

    触摸事件有三种

    • 开始
      和单点触摸一个意思,就是有新的触摸点在屏幕上,就会传入这个触摸点
    begin.png

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

    begin2.png

    id = 1是第二个触摸点

    • 移动
      当有触摸点移动的时候,会打印出所有的触摸点
    move.png

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

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

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

    相关文章

      网友评论

        本文标题:cocos2dx-lua 中的多点触摸

        本文链接:https://www.haomeiwen.com/subject/gxvcdttx.html