3.0 tableView 和按钮的问题

3.0发现menu 和controlButton 加到 tableview 上,在menu和按钮上不能滑动,原来2.0的时候修改触摸级别可以解决。3.0不知道怎么解决。

确实不好用 tableview和pageview的体验实在是太差 还不如自己写一个layer

自己写可得多难啊。

– 创建单态缩放按钮
function buttonWithSingle(_image, _callBack, _tag, _scale)
sprite = cc.Sprite:createWithSpriteFrameName(_image)
sprite:setAnchorPoint(cc.p(0.5, 0.5))
sprite:setScale(_scale)

local function onTouchBegan(touch, event)
    local target = event:getCurrentTarget()
    _touchStartPos = touch:getLocation()

    if getContains(_touchStartPos, target) then
        target:setScale(0.95 * _scale)
        return true
    end
    return false
end

local function onTouchMoved(touch, event)
    local target = event:getCurrentTarget()
    local _movePos = touch:getLocation()
    local _isDrag = getDragState(_touchStartPos, _movePos)
    if _isDrag then
        target:setScale(_scale)
    end
end

local function onTouchEnded(touch, event)
    local target = event:getCurrentTarget()
    target:setScale(_scale)
    local _touchEndPos = touch:getLocation()
    local _isDrag = getDragState(_touchStartPos, _touchEndPos)
    _touchStartPos = {}
    if _isDrag then
        return
    end
    _callBack(_tag)         --方法回调
end

local listener = cc.EventListenerTouchOneByOne:create()
listener:setSwallowTouches(_isSwallow)                    --设置为false,使触摸时间向下传递
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = cc.Director:getInstance():getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, sprite)
return sprite

end

– 判断是否拖拽
function getDragState(_startPos, _endPos)
local _moveX = math.abs(_startPos.x - _endPos.x)
local _moveY = math.abs(_startPos.y - _endPos.y)
local _distance = math.sqrt(math.pow(_moveX, 2) + math.pow(_moveY, 2))
if _distance > 10 then
return true
else
return false
end
end

– 获得触摸点是否在组件内
function getContains(_position, target)
local locationInNode = target:convertToNodeSpace(_position)
local s = target:getContentSize()
local rect = cc.rect(0, 0, s.width, s.height)
return cc.rectContainsPoint(rect, locationInNode)
end

身为菜鸟,代码写的很不规范,但是还是解决了在tableView添加按钮的问题,我是用上面方法创建的按钮,然后把按钮添加到TableView上得,希望可以帮到你。

谢谢,看来只能自定义按钮了

试一下,希望管用