2011-05-27 13 views
0

こんにちは私はiphoneに新しい。今私は連続的なスクロールの背景にしようとしています。私は子供のように画像を追加しました。今、連続スクロールに使用してコードイムは、これは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]; 

私は画像が連続して大丈夫スクロールしている。このことであるが、画面を入力したとき、彼らはの方にスクロールすると、彼らはお互いに隣接しているが、取得mは問題です画面の反対側には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

ヘイニック、

私はあなたが何ができるか がCCPlaceを使用..です完全にあなたのコードを理解し、あまりにも良い習慣であるように見えるdoes notのようではいけません。

目的の位置までスプライトを移動してから、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使用することができます:

+0

ああ..おお..私はこれを試してみましょう..ありがとう... – Hadi

+0

gandeshその素敵な答え... –