creator某一帧会突然卡顿一下

你这话说的,我只展示一个静态画面更不会卡呢!你现在就控制一个精灵不断的从屏幕左侧移动到右侧,循环移动,就会偶尔卡顿,而且卡顿时间挺久,在网页和creator自带模拟器都会发生,在native真机稍微好些。这绝对不是逻辑复杂的问题,只是改变位置并没有重复addChild。

addChild 造成 脚本暂停 渲染卡顿

@sky068 就我理解你啊:joy:,scrollView抖动感受很深

不是说的很明白了嘛没有反复addChild,只addChild一次,然后在update里不断更改位置而已。

估计用creator做棋牌的比较多,都不怎么关心性能卡不卡。

不不不,用了这么久,我还从来没用过update函数呢

奇葩设计就说奇葩设计,如果随便写写就说自己会写代码了,那程序员的工资也就两三千吧

你自己先去看看scrollview是如何实现的吧,给你贴代码:
_onTouchBegan: function(event, captureListeners) {
if (!this.enabledInHierarchy) return;
if (this._hasNestedViewGroup(event, captureListeners)) return;

            var touch = event.touch;
            if (this.content) {
                this._handlePressLogic(touch);
            }
            this._touchMoved = false;
            this._stopPropagationIfTargetIsMe(event);
        },

        _onTouchMoved: function(event, captureListeners) {
            if (!this.enabledInHierarchy) return;
            if (this._hasNestedViewGroup(event, captureListeners)) return;

            var touch = event.touch;
            if (this.content) {
                this._handleMoveLogic(touch);
            }
            // Do not prevent touch events in inner nodes
            if (!this.cancelInnerEvents) {
                return;
            }

            var deltaMove = cc.pSub(touch.getLocation(), touch.getStartLocation());
            //FIXME: touch move delta should be calculated by DPI.
            if (cc.pLength(deltaMove) > 7) {
                if (!this._touchMoved && event.target !== this.node) {
                    // Simulate touch cancel for target node
                    var cancelEvent = new cc.Event.EventTouch(event.getTouches(), event.bubbles);
                    cancelEvent.type = cc.Node.EventType.TOUCH_CANCEL;
                    cancelEvent.touch = event.touch;
                    cancelEvent.simulate = true;
                    event.target.dispatchEvent(cancelEvent);
                    this._touchMoved = true;
                }
            }
            this._stopPropagationIfTargetIsMe(event);
        },

        _onTouchEnded: function(event, captureListeners) {
            if (!this.enabledInHierarchy) return;
            if (this._hasNestedViewGroup(event, captureListeners)) return;

            this._dispatchEvent('touch-up');

            var touch = event.touch;
            if (this.content) {
                this._handleReleaseLogic(touch);
            }
            if (this._touchMoved) {
                event.stopPropagation();
            } else {
                this._stopPropagationIfTargetIsMe(event);
            }
        },
        
        _onTouchCancelled: function(event, captureListeners) {
            if (!this.enabledInHierarchy) return;
            if (this._hasNestedViewGroup(event, captureListeners)) return;

            // Filte touch cancel event send from self
            if (!event.simulate) {
                var touch = event.touch;
                if(this.content){
                    this._handleReleaseLogic(touch);
                }
            }
            this._stopPropagationIfTargetIsMe(event);
        },

@sky068 对了,测试的时候尽量打包出来在测试

不管你是 几个 加一个 也是会卡的,官方2.0修复

你这人真倔!都已经给你说了不使用scrollview也一样会偶尔卡顿掉帧一下。

我的意思是卡顿的时候好像并不是发生在addchild时,而是在反复修改位置的过程中某一帧会突然卡住。

心疼楼主,回帖的人都不仔细审题的吗
但是,我测试情况2没有出现卡顿,用的js

嗯 我这边也有卡顿 贵点的手机上面要好点 但是还是能感觉到轻微的卡顿
我是公告向左移动的时候

是的,都没明白怎么回事就下结论了

是的,我打包到native平台会好很多。

你发个测试工程, 看下能不能复现你的问题

会很卡,之前我们项目中有个竞技场排行榜功能,同时会生成几十个,发现只要一滑动就会掉帧严重。后来一个同事大神直接写了一个类似的脚本瞬间不卡。感觉你的关注点不对,测试不应该拿低端机测么,scrollview性能这么差…

楼主问题解决了吗?我用的是1.5.2的版本,也同样发现这个情况。把所有方法都打了log,正常情况下每次update时间都是17-20毫秒的样子,但是卡顿时差不多半分钟。但是根本就没任何log输出

半分钟?你是说半秒钟吧?没找到什么好方法,在真机上问题不大。