我使用这个简单的代码来滚动背景。
back1=[CCSprite spriteWithSpriteFrameName:@"back1.jpg"];
back2=[CCSprite spriteWithSpriteFrameName:@"back2.jpg"];
CGSize size = [[CCDirector sharedDirector] winSize];
back1.position = ccp(size.width/2, size.height/2);
back2.position = ccp(size.width/2, (size.height/2)*3);
[self schedule:@selector(scroll:)];
[spriteNode addChild:back1];
[spriteNode addChild:back2];
//方法
-(void)scroll:(ccTime)dt
{
CGSize size = [[CCDirector sharedDirector] winSize];
back1.position = ccp( back1.position.x , back1.position.y - 99*dt );
back2.position = ccp( back2.position.x , back2.position.y - 99*dt );
if (back1.position.y < -size.height/2)
{
back1.position = ccp(size.width/2, -5+(size.height/2)*3);
}
else if (back2.position.y < -size.height/2)
{
back2.position = ccp(size.width/2, -5+(size.height/2)*3);
}
}
它有效但看起来并不自然,它不会连续移动 - 如果你仔细观察,有时会看到它有点轻弹。 由于这个原因,似乎fps性能下降了。
这种方法是“专业”吗?它的推荐?或parallex滚动更好? 我怎样才能使运动变得“平坦”,看起来又好又自然?
谢谢。
答案 0 :(得分:0)
我为此使用了操作,请使用我用于类似于您需要的代码的代码检查以下帖子。是一个旧代码,我确信有更好的方法来做到这一点,但它的工作原理
答案 1 :(得分:0)
实验在您的日程安排上指定一个间隔,看看您是否可以达到以合理的稳定状态调用选择器的条件:
[self schedule:@selector(scroll:) interval:.05f];
会给你(在理想条件下)每秒20次移动。 CCLOG dt,看看它是否恒定。