这个问题问的人也不少,目前是在 ScrollView 组件脚本里专门对嵌套时的拖拽进行了处理,你可以重写下面这个方法,来允许子节点约束框上的滑动时间传递到父节点:
https://github.com/cocos-creator/engine/blob/v1.4/cocos2d/core/components/CCScrollView.js#L880-L908
后续我们会研究如何更好的支持这种嵌套需求。
这个问题问的人也不少,目前是在 ScrollView 组件脚本里专门对嵌套时的拖拽进行了处理,你可以重写下面这个方法,来允许子节点约束框上的滑动时间传递到父节点:
https://github.com/cocos-creator/engine/blob/v1.4/cocos2d/core/components/CCScrollView.js#L880-L908
后续我们会研究如何更好的支持这种嵌套需求。
用的按钮 切换页面 左右滑动一开始就禁止的 不激活 按钮是不能滑动的
用的按钮 切换页面 左右滑动一开始就禁止的 不激活 按钮是不能滑动的 所以才要这样
你好,我也遇到这个问题来,请问怎么重写这个事件呢?
如何实现啊!
那个游戏叫皇室战争。。。。
其实这个你自己实现在拖动事件就很容易搞定了
这个改写了,没用
将 scrollview 和 pageView 的 js 代码弄出来,自己封装成另外两个组件。再到这两个组件里面改。
可以实现。
主要原因就是scrollview的事件吞掉pageview的事件导致pageview监听不到事件,按照我给的附件,放入scrollview的view节点,。然后自己的scrollview拖到脚本中就可以了,具体逻辑可以看看代码,主要思路就是在scrollview监听到这些事件之前拦截后自己分发,根据需求,看是要分发给scrollview还是pageview。
comp_scroll_recognition.js.zip (1.6 KB)
谢谢,不过已经用这个简单的方法实现了:
cc.Class({
extends: cc.PageView,
//this is for nested scrollview
_hasNestedViewGroup: function (event, captureListeners) {
if(event.eventPhase !== cc.Event.CAPTURING_PHASE) return;
var touch = event.touch;
if(!touch) return;
var deltaMove = cc.pSub(touch.getLocation(), touch.getStartLocation());
if (deltaMove.x > 7 || deltaMove.x < -7)
return false;
// if (deltaMove.y > 7 || deltaMove.y < -7)
// return false;
if(captureListeners) {
//captureListeners are arranged from child to parent
for(var i = 0; i < captureListeners.length; ++i){
var item = captureListeners[i];
if(this.node === item) {
if(event.target.getComponent(cc.ViewGroup)) {
return true;
}
return false;
}
if(item.getComponent(cc.ViewGroup)) {
return true;
}
}
}
return false;
},
});
刚需啊。元老
怎么保证上下滑动时,左右不触发呢?
怎么保证上下滑动时,左右不触发呢?
分别设定父子ScrollView的方向。不同向。
pageView 的需求,最简单的办法就是基于两个ScrollView嵌套,附加自己另写的Page逻辑上去。
详见我上面发的地址
版本2.09这个方法可以用,且不用修改scrollview组件!真想多点几个赞!
用上面的方法可以翻页,但是上下滑动不正常,这个是怎么解决的呢??
基于楼上大牛改的
请问一下,这个是直接绑定在pageview节点上吗,好像没生效呢