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上得,希望可以帮到你。
谢谢,看来只能自定义按钮了
试一下,希望管用