版本:cocos2dx 2.2.2
现象:使用CCMoveTo时,动作不流畅,存在卡顿和跳动
求解,是引擎本身的bug么
版本:cocos2dx 2.2.2
现象:使用CCMoveTo时,动作不流畅,存在卡顿和跳动
求解,是引擎本身的bug么
开帧数看一下,还有就是你真机上看测了么? 如果电脑配置不行,虚拟机会卡顿的
小米3,每秒60帧左右
代码如下:
CCFiniteTimeAction* placeAction = CCPlace::create(ccp(size.width / 2, size.height + mSprite->getContentSize().height / 2));
CCMoveTo* moveAction = CCMoveTo::create(5, ccp(size.width / 2, -mSprite->getContentSize().height / 2));
CCSequence* action = CCSequence::create(placeAction, moveAction, NULL);
CCRepeat* repeatAction = CCRepeat::create(action, 100);
mSprite->runAction(repeatAction);
用setPositon吧
mSprite->setPosition(ccp(size.width / 2, size.height + size.height / 2));
CCMoveTo* moveAction = CCMoveTo::create(5, ccp(size.width / 2, -size.height / 2));
mSprite->runAction((CCMoveTo*)moveAction->copy());
这样还是有卡顿和跳动
看一下是否在别的地方设置位置或者是否多次调用这些语句
只有这一个场景,代码如下(cocos2dx 2.2.2),还是会有卡顿和跳动:
bool GameArcade::init() {
if (!CCScene::init()) {
return false;
}
CCSize size = CCDirector::sharedDirector()->getVisibleSize();
mBgLayer = CCLayer::create();
mSprite = CCSprite::create("whiteBlock.png");
mSprite->setPosition(ccp(size.width / 2, size.height / 2));
mBgSprite = CCSprite::create("green2.jpg");
mBgSprite->setPosition(ccp(size.width / 2, size.height / 2));
CCSize bgSpriteOriginSize = mBgSprite->getContentSize();
mBgSprite->setScaleX(size.width / bgSpriteOriginSize.width);
mBgSprite->setScaleY(size.height / bgSpriteOriginSize.height);
CCSize spriteOriginSize = mSprite->getContentSize();
mSprite->setScaleX(size.width / spriteOriginSize.width);
mSprite->setScaleY(size.height / spriteOriginSize.height);
mBgLayer->addChild(mBgSprite, 0);
mBgLayer->addChild(mSprite, 5);
this->addChild(mBgLayer);
/*
CCFiniteTimeAction* placeAction = CCPlace::create(ccp(size.width / 2, size.height + size.height / 2));
CCMoveTo* moveAction = CCMoveTo::create(5, ccp(size.width / 2, -size.height / 2));
CCSequence* action = CCSequence::create(placeAction, moveAction, NULL);
CCRepeat* repeatAction = CCRepeat::create(action, 100);
mSprite->runAction(repeatAction);
*/
mSprite->setPosition(ccp(size.width / 2, size.height + size.height / 2));
CCMoveTo* moveAction = CCMoveTo::create(5, ccp(size.width / 2, -size.height / 2));
mSprite->runAction((CCMoveTo*)moveAction->copy());
return true;
}
那可能是帧数不稳定吧
好像确实是刷帧不稳定导致的,应该怎么解决呢
我试了把fps设置为大于1/60,但不起作用
这个具体对待吧,例如在游戏过程中加载图片资源,可能会造成游戏卡顿,,,你应该做优化,看看什么地方花费的时间多;;;;屏蔽一些你认为有影响的语句,逐步排除吧
你的图片资源是不是很大