关于3.11更新后 UIScrollView UIListView UIPageView的一些“恶心”改动

UIScrollView 更新后 每次添加改变ScrollVIew/ListView大小内容 都会重置container坐标,返回第一项所在位置,这就造成动态添加元素以后,不会停留在当前位置 而是回到起始位置~ 同时修改后的事件监听 比如 EVENT_BOUNCE_TOP 会多次调用回调 - - 做下拉刷新恶心了很多。 ok 修改了源码 还是实现了原来的功能

最恶心的一点是 UIPageView的改动, 3.10版 是 继承自ccui.Layout ,3.11 修改为继承自 ccui.ListView~
监听页面滚动的回调方法_pageTurningEvent 也没有调用过…… 只有一个“简单的”

/**
     * Adds event listener to ccui.PageView.
     * @param {Function} selector
     * @param {Object} [target=]
     * @deprecated since v3.0, please use addEventListener instead.
     */
    addEventListenerPageView: function (selector, target) {
        this._pageViewEventSelector = selector;
        this._pageViewEventListener = target;
    },

addEventListener: function(selector){
        this._ccEventCallback = function(ref, eventType) {
            if(eventType == ccui.ScrollView.EVENT_AUTOSCROLL_ENDED)
                selector(this, eventType)
        };
    },

我想问下 - - 每次只在滑动结束后调用,那你原来设计的那些状态都不用了么~ OK 继续去修改底层~

上面是一些吐槽~ 不过相对的 添加的新内容还是不错的 比如: 添加了滚动条神马的 还是很不错的~ (PS:我以前写的滚动条可以下岗了 T-T)
衷心希望 大大们 能尽早的让listview实现 tableview那种动态刷新功能~

3.11 的 PageTruningEvent 应该是会调用的呀? 楼主使用的是最新发布的版本么?

子龙好~ 我使用的是最新的 3.11官网最新的~ 刚才看了下,论坛里好多小伙伴也都有类似的反馈,我查看源码确实没有调用过,我也全局搜索过。看了下源码~ UIPageVIew在3.11的时候已经继承自UIListView所有的调用都源自UIScrollView的_dispatchEvent方法。

 _dispatchEvent: function(event)
    {
        if(this._scrollViewEventSelector){
            if (this._scrollViewEventListener)
                this._scrollViewEventSelector.call(this._scrollViewEventListener, this, event);
            else
                this._scrollViewEventSelector(this, event);
        }
        if(this._ccEventCallback)
            this._ccEventCallback(this, event);
    },

确实没有调用过。

addEventListener: function(selector){
        this._ccEventCallback = function(ref, eventType) {
            if(eventType == ccui.ScrollView.EVENT_AUTOSCROLL_ENDED)
                selector(this, eventType);
        };
    },

这个是UIPageVIew中的 _ccEventCallBack方法 只有在滑动结束的时候 才会回调注册的 selector函数 - -

我已经修改了UIPageView的 addEventListerner _ccEventCallback方法,可以暂时实现需求的功能

大哥,ListView的滑动条怎么隐藏啊???

UIScrollView中 有个方法 setScrollBarEnabled 来设置是否显示 滚动条的~

/**
     * Toggle scroll bar enabled.
     * @param {boolean} enabled True if enable scroll bar, false otherwise.
     */
    setScrollBarEnabled: function(enabled)
    {
        if(this._scrollBarEnabled === enabled)
        {
            return;
        }

        if(this._scrollBarEnabled)
        {
            this._removeScrollBar();
        }
        this._scrollBarEnabled = enabled;
        if(this._scrollBarEnabled)
        {
            this._initScrollBar();
        }
    },

好的,谢谢。。。

请问怎么升级cocos-js版本引擎

UIPageView scrollToPage 升级到3.11.1后,竟然无效了,太无语了。。。本来还好好的,一升级就出问题了,能不能别这样搞啊

你是从哪个版本升级上来的?

1赞

3.6.1升级到3.11.1

我刚刚试了一下 cocos2d-html5 最新的引擎 scrollToPage 是好的呀。。。
你是怎么使用的?

我也觉得 pageview改得好恶心。 1. 重新刷新 使用scrolltopage的时候,必须先显示第一页, 2.PageView::EventType 为什么只有turning事件,而没有begin 和end事件, 而且turning事件好像是turn_ended事件, 有些延迟的太久了吧,翻完页两秒才执行这个事件。好坑!

PageView的事件触发时间是可以调整的,void PageView::setAutoScrollStopEpsilon(float epsilon)

这个函数大概是 3.12 添加进去的。