滚动图像不是平移?

时间:2012-03-05 12:40:22

标签: objective-c cocos2d-iphone

我使用这个简单的代码来滚动背景。

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滚动更好? 我怎样才能使运动变得“平坦”,看起来又好又自然?

谢谢。

2 个答案:

答案 0 :(得分:0)

我为此使用了操作,请使用我用于类似于您需要的代码的代码检查以下帖子。是一个旧代码,我确信有更好的方法来做到这一点,但它的工作原理

Cocos2D: Gap in scrolling background

答案 1 :(得分:0)

实验在您的日程安排上指定一个间隔,看看您是否可以达到以合理的稳定状态调用选择器的条件:

[self schedule:@selector(scroll:) interval:.05f];

会给你(在理想条件下)每秒20次移动。 CCLOG dt,看看它是否恒定。