滑动Layer,怎么样实现 点击到CCControlButton拖动也可以

滑动Layer,怎么样实现 点击到CCControlButton拖动也可以

点击CCControlButton区域拖动时, 首先事件响应的是CCControlButton 事件, 无法响应ccTouchesBegan事件, 该怎么实现!!!

:6: 没有 办法么!?

CCControlButton和CCLayer的优先级总是有大有小,CCControlButton小,点击CCControlButton时仍能拖动CCLayer,但是无法点击CCControlButton。CCControlButton优先级大,点击它就只能触发。可以用CCSprite代替CCControlButton,然后通过点击的位置是否在CCSprite区域内判断是否点击到CCSprite

修改CCControlButton这个类,给他赋予一个moveX或者moveY的值,然后在touchmove的时候这个moveX或者moveY会改变,在你点击进去button的时候判断下moveX或者moveY这个值,如果变化大于自己定义的临界值就不往下走click事件就行

谢谢 , 怎么往下走不走 click 事件呢

:6: 有没有办法啊!?

判断临界值

能不能, 给个代码示例?! 不往下走click事件就行 这个如何处理!!

void CCControlButton::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
int endX = pTouch->getLocation().x;
int startX = pTouch->getStartLocation().x;
int endY = pTouch->getLocation().y;
int startY = pTouch->getStartLocation().y;
if (abs(endX-startX) > 50) {
m_isMovedX = true;
}
if (abs(endY-startY) > 50) {
m_isMovedY = true;
}

if(((CCControlButton*)pSender)->isMovedX())
{
return;
}

if(((CCControlButton*)pSender)->isMovedX()) pSender这个是?
这样 也不可以, 执行CCControlButton 所在Layer 的ccTouchMoved 事件啊!

你点击的那个button,我们用这个来实现tableview的效果

能 加下QQ 么? 18046317

用临界直做体验并不好,建议首先为button添加一个clicked事件,然后点击button时通过convertToWorldSpace()判断点下和抬起时,
button的位置来判断是否为拖动事件,如果2次结果不一致,就停止button的clicked事件触发。

CCControlButton的优先级是1,而且默认是拦截触屏消息,所以必须CCLayer的优先级比1要小,才可以先响应,并且让其可以往低优先级传递触屏信息……至于如何处理移动后不会触发按钮信息,这个的话只要加一个state就好了,没什么需要多说的了吧……

:14: 已经解决了! 谢谢大家。。

怎么解决的?