cocos2d-x 3.X写的横向滚动背景卡顿问题

这是update里的代码:

for (int i = 0; i < 2; i++){
        bgNear->setPositionX(bgNear->getPositionX() - 10);

        if (bgNear->getPositionX() < -bgNear->getContentSize().width){
            bgNear->setPositionX(bgNear->getPositionX() + bgNear->getContentSize().width * 2);
        }
    }

```

这是init里的代码:
 Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    for (int i = 0; i < 2; i++){
        bgNear = Sprite::create("bg_near.jpg");
        bgNear->setAnchorPoint(Point::ZERO);    
        bgNear->setPosition(Point(origin.x, origin.y));
        this->addChild(bgNear);
    }
    bgNear->setPosition(bgNear->getContentSize().width, 0);

```

滚动的时候有明显的卡顿,用2.x和3.x都试过了,是这段代码有问题?

方法问题。请使用runAction(MoveTo::create(耗时,VEC2(X,Y))来进行平滑移动。MoveBy同样OK。

但是如果使用moveTo等函数,我就无法在游戏中随时控制滚动的速度了。

MoveTo::create(1次移动的距离所需时间,x或者y + 步长)如果不能随意滚动,你来找我~!~!

忘记说了,需要stopAction

你的update执行有间隔吗?是默认的每帧执行,还是隔一段时间执行呢?如果不是每帧执行,就会有卡顿的感觉了~

是每一帧执行的,this->scheduleUpdate();

不是不能移动,是移动的有明显的卡顿现象。我看很多人是用update函数做的滚动背景,不知道我的代码是否有问题呢?能分析下嘛

每帧执行,自己定义出每秒移动的距离,用这个速度乘以每帧所用的时间试试,因为每帧的时间是不一样的,你使用一个每帧的固定速度肯定实际上每帧的速度是不一样的

这个回答非常有道理,update函数的参数我打印过,会稍微有不同,但是相差非常的小。

最大的问题就是没有乘时间

代码高亮咋这么难用,我X

//远景滚动
for (int i = 0; i < 2; i++){
gameLayer->bgFar*->setPositionX(gameLayer->bgFar*->getPositionX() - BG_FAR_SCROLL_SPEEDdt);
if (gameLayer->bgFar
->getPositionX() < -gameLayer->bgFar*->getContentSize().width){
gameLayer->bgFar*->setPositionX(gameLayer->bgFar*->getPositionX() + gameLayer->bgFar*->getContentSize().width * 2);
}
}
//近景滚动
for (int i = 0; i < 2; i++){
gameLayer->bgNear*->setPositionX(gameLayer->bgNear*->getPositionX() - BG_NEAR_SCROLL_SPEEDdt);
if (gameLayer->bgNear
->getPositionX() < -gameLayer->bgNear*->getContentSize().width){
gameLayer->bgNear*->setPositionX(gameLayer->bgNear*->getPositionX() + gameLayer->bgNear*->getContentSize().width * 2);
}
}**************

木头兄,真的跪了,滚动一直卡顿,已经无法医治了。。

我实在是服了这个编辑器了。会把我for循环里数组的中括号给去掉。各位将就着看吧。我很无语。

楼主还是卡顿嘛?

乘以时间应该也是没用的,看下官方给的test,仔细看下,也会有卡顿

咋办啊…

我微博上@了官方,没人鸟。。