cocos2d-Luacocos2d

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)

触摸事件有三种

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没被使用,则赋给新加入的触摸点

上一篇下一篇

猜你喜欢

热点阅读