在iphone上连续滚动背景需要帮助

时间:2011-05-27 09:25:07

标签: iphone objective-c cocos2d-iphone continuous

嗨,我是iphone新手..现在我想继续滚动我的背景。我小时候添加了一张图片。现在我用于连续滚动的代码是

[bg1 setPosition:ccp(310, 160)];
CCSprite *bg2 = [CCSprite spriteWithFile:@"lines.jpg"];
[bg2 setPosition:ccp(880, 160)];
id enterRight = [CCMoveTo actionWithDuration:4 position:ccp(310, 160)];
id exitLeft = [CCMoveTo actionWithDuration:4 position:ccp(-310, 160)];
id reset = [CCMoveTo actionWithDuration:0 position:ccp(880, 160)];
id enterRight2 = [CCMoveTo actionWithDuration:4 position:ccp(310, 160)];
id exitLeft2 = [CCMoveTo actionWithDuration:4 position:ccp(-310, 160)];
id reset2 = [CCMoveTo actionWithDuration:0 position:ccp(880, 160)];
id seq1 = [CCSequence actions: exitLeft, reset, enterRight, nil];
id seq2 = [CCSequence actions: enterRight2, exitLeft2, reset2, nil];
[bg1 runAction:[CCRepeatForever actionWithAction:seq1]];
[bg2 runAction:[CCRepeatForever actionWithAction:seq2]];
[self addChild:bg1 z:-1 tag:1234];
[self addChild:bg2 z:-1 tag:2345];

我遇到的问题是图像连续滚动,但是当进入屏幕时它们彼此相邻但是当它们向屏幕的另一侧滚动时,两个图像之间会出现间隙随着图像滚动,趋向于扩大..任何想法或建议为什么会发生这种情况? 另一件事有人说我们可以使用更新进行背景滚动。看起来像这样。

[self schedule: @selector(update:)];


- (void) update: (ccTime) dt
{
    float dy = scroll_speed_per_second * dt;
    [self setPosition:ccp(self.position.x,self.position.y + dy)];
}

还有一件事我想问...我也可以使用上方法滚动图像但我无法将图像重置回那里的位置。我是否必须将孩子重置回其位置或整个框架。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

海耶尼克,

我似乎没有完全理解你的代码,它似乎也不是一个好习惯.. 你能做的就是使用CCPlace。

只需将精灵移动到目标位置,然后使用ccplace重置精灵位置。

喜欢这个......

cloud1=[Obstacle spriteWithFile:@"IT_Cloud1.png" type:CLOUD1];
[self addChild:cloud1 z:4];
cloud1.position=ccp(500,270);
id rptFrvr1=[CCRepeatForever actionWithAction:[CCSequence actions:
                                        [CCMoveTo actionWithDuration:7 position:ccp(-100,270)],
                                              [CCPlace actionWithPosition:ccp(500,270)],nil]];
[cloud1 runAction:rptFrvr1];



cloud2=[Obstacle spriteWithFile:@"IT_Cloud2.png" type:CLOUD2];
[self addChild:cloud2 z:1];
cloud2.position=ccp(700,280);
id rptFrvr2=[CCRepeatForever actionWithAction:[CCSequence actions:
                                              [CCMoveTo actionWithDuration:12 position:ccp(-200,280)],
                                              [CCPlace actionWithPosition:ccp(700,280)],nil]];
[cloud2 runAction:rptFrvr2];

不要被“type”参数搞糊涂... dat只是我自己的ccsprite实现.u可以简单地使用ccSprite spritewithfile: