-1

私のゲームでは、左に移動する連続ループを作成する 2 つの背景が交互に表示されます。しかし、今は片方が進み、もう片方が従わない。

私は容赦なく別の番号を試しましたが、何も役に立たないようです。

あなたが私に与えることができるどんな助けにも感謝します.

if((self = [super init]))
    {

        self.isTouchEnabled = YES;

        background=[CCSprite spriteWithFile:@"testbackground88.png"];
        [self addChild:background z:1];
        background.position=ccp(500,240);
        id repeat1 =[CCRepeatForever actionWithAction:[CCSequence actions:
                                                             [CCMoveTo actionWithDuration:7 position:ccp(-300,240)],
                                                             [CCPlace actionWithPosition:ccp(800,240)],nil]];
       [background runAction:repeat1];


        background2=[CCSprite spriteWithFile:@"testbackground92.png"];
        [self addChild:background2 z:1];
        background2.position=ccp(500,240);
        id repeat2 =[CCRepeatForever actionWithAction:[CCSequence actions:
                                                             [CCMoveTo actionWithDuration:7 position:ccp(-300,240)],
                                                             [CCPlace actionWithPosition:ccp(800,240)],nil]];
       [background2 runAction:repeat2];
}
4

2 に答える 2

0

このようにすると、毎回同じ正確な位置に移動するため、常に bg よりも bg2 が表示されるはずです。たとえば、背景 1 の右隣に背景 2 を配置する場合は、次のようにすることができます。

background2=[CCSprite spriteWithFile:@"testbackground92.png"];
[self addChild:background2 z:1];
int bgWidth = background2.contentSize.width;
background2.position=ccp(500 + bgWidth ,240);
id repeat2 =[CCRepeatForever actionWithAction:[CCSequence actions:
    [CCMoveTo actionWithDuration:7 position:ccp( (-300 + bgWidth) ,240)],
    [CCPlace actionWithPosition:ccp((800 + bgWidth ),240)],nil]];

コンテナ スプライトに両方のスプライトを隣り合わせに追加し、コンテナで移動アクションを実行する方が良いでしょう。

于 2012-08-23T07:39:29.837 に答える
0
if((self = [super init]))
{
    self.isTouchEnabled = YES;

    //add an empty container sprite in 0,0 pos
    CCSprite container = [CCSprite node];
    [self addChild:container];

    // get the screen size and use it for positioning
    CGSize scrSize = [[CCDirector sharedDirector] winSize];

    // add the sprites to the container
    background  =[CCSprite spriteWithFile:@"testbackground88.png"];
    background2 =[CCSprite spriteWithFile:@"testbackground92.png"];

    [container addChild:background z:1];
    [container addChild:background2 z:1];

    // use the background's widths to define it's in between distance. 
    int bgDist = ( background2.contentSize.width + background.contentSize.width) / 2;
    // the container's total travel;
    int containerTravel =  ( background.contentSize.width + background2.contentSize.width)/2 ;

    background.position     =ccp(scrSize.width/2, scrSize.height/2);
    background2.position    =ccp( (scrSize.width/2 + bgDist), scrSize.height/2);

    // move the container
    CCRepeatForever loopBgTravel =[CCRepeatForever actionWithAction:[CCSequence actions:
        [CCMoveTo actionWithDuration:0 position:ccp(0,0)],
        [CCMoveTo actionWithDuration:7 position:ccp(-containerTravel,0)]];

   [container runAction:loopBgTravel];
}

これでうまくいかない場合は、お気軽にもう一度お問い合わせください

于 2012-08-24T05:17:30.407 に答える