0

こんにちは、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];

私が得ている問題は、画像が連続して問題なくスクロールしていることですが、画面に入ると互いに隣接していますが、画面の反対側に向かってスクロールすると、2 つの画像の間にギャップが生じ、広がる傾向があります。画像がスクロールするにつれて..なぜこれが起こっているのか考えや提案はありますか? バックグラウンドスクロールに更新を使用できると誰かが言った別のこと。このように見えます。

[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 つ聞きたいことがあります。上の方法を使用して画像をスクロールすることもできますが、画像を元の位置にリセットすることはできません。子をその位置またはフレーム全体にリセットする必要がありますか。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

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];

「タイプ」パラメーターに混乱しないでください...datはccspriteの私自身の実装です..uは単にccSprite spritewithfileを使用できます:

于 2011-05-27T09:41:55.483 に答える