http://childhood.logdown.com/posts/161035/some-notes-quick-cocos2dx-touch-event-streams

Quick-Cocos2dX触摸事件流的一些说明

刚开始接触quick,在用的过程中,对于触摸以及吞噬的使用有些问题。在浏览谷歌邮件组的时候,发现廖大对quick的触摸事件流作了一些说明。

保留了 cocos2dx 已有的触摸事件处理机制,扩展了:

  1. 任意 Node 都可以响应触摸事件,并且按照该 Node 及其所有子 Node 占用的屏幕空间来判断触摸响应区域;
  2. 按照 Node 的渲染次序来响应触摸,也就是说最上层的 Node 最先响应触摸,用来制作对话框就很方便了。
  3. 在 Lua 框架里提供了多种按钮类型。
注意
  • cocos2d-x 的触摸是基于 CCLayer 的。而 CCLayer 按照优先级来响应触摸。
  • quick 的触摸是基于显示层级的。

2014/1/14更新
版本:QuickCocos2dX 2.2.1rc

举个例子:)

-- 场景中的按钮
    local leftMenu = cc.ui.UIPushButton.new("somePic.png")
        :onButtonPressed(function(event)
            print("left menu pressed")
        end)
        :onButtonRelease(function(event)
            print("left menu release")
        end)
        :onButtonClicked(function(event)
            print("left menu clicked")
        end)
        :align(display.CENTER, display.cx - 100, display.cy)
        :addTo(self)

-- 模态层
    local poplayer = display.newSprite():addTo(self)
    poplayer:setCascadeBoundingBox(CCRectMake(0, 0, display.width, display.height))
    poplayer:setTouchEnabled(true)
    poplayer:addTouchEventListener(function(event, x, y)
        if event == "began" then
            return true
        elseif event == "ended" then
            print("pop layer touch ended......")
        end

    end)
  
-- 模态层中的按钮
    local rightMenu = cc.ui.UIPushButton.new("somePic.png")
        :onButtonPressed(function(event)
            print("right menu pressed")
        end)
        :onButtonRelease(function(event)
            print("right menu release")
        end)
        :onButtonClicked(function(event)
            print("right menu clicked")
        end)
        :align(display.CENTER, display.cx + 100, display.cy)
        :addTo(poplayer)

可以将上面代码拷贝到工程中进行测试,将图片somePic.png换成你自己的按钮图片,测试发现,leftMenu位于poplayer之下,触摸是不响应的,poplayer中的rightMenu能够响应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值