0

私は cocos2d の世界の初心者です。最初のチュートリアルを開発していますが、1 つの問題に直面しています。問題は、画像 (1024 X 320) があり、向きが横向きであるということです。この目的のために、その画像を右から左に連続的に移動する必要があります。 Rayさんのスペースシューターのチュートリアルを利用しましたが(おかげさまで)、画像が何度も出てこないようです。私のコードは..

-(id) init
{
    if( (self=[super init])) {
        CGSize screenSize = [CCDirector sharedDirector].winSize;

        // 1) Create the CCParallaxNode
        backgroundNode = [CCParallaxNode node];
        [self addChild:backgroundNode z:-1];

        // 2) Create the sprites we'll add to the CCParallaxNode
        Back = [CCSprite spriteWithFile:@"bg_front_spacedust.png"];
        //Back.position=ccp(screenSize.width/2, screenSize.height/2);
        Back.rotation = -90;
        Back1 = [CCSprite spriteWithFile:@"bg_front_spacedust.png"];
        Back1.rotation = -90;

        // 3) Determine relative movement speeds for space dust and background
        CGPoint dustSpeed = ccp(0.1, 0.1);

        // 4) Add children to CCParallaxNode
        [backgroundNode addChild:Back z:0 parallaxRatio:dustSpeed positionOffset:ccp(screenSize.width/2, screenSize.height/2)];
        NSLog(@"back.content width is...%f",Back.contentSize.width);
        [backgroundNode addChild:Back1 z:1 parallaxRatio:dustSpeed positionOffset:ccp(screenSize.width/2, screenSize.height*2)];

        // 5) Enable updates
        [self scheduleUpdate]; 
}
    return self;
}


- (void)update:(ccTime)dt {

    // 1) Update background position
    CGPoint backgroundScrollVel = ccp(0,-1000);
    backgroundNode.position = ccpAdd(backgroundNode.position, ccpMult(backgroundScrollVel, dt));

    // 2) Check for background elements moving offscreen
    NSArray *spaceDusts = [NSArray arrayWithObjects:Back, Back1, nil];
    for (CCSprite *spaceDust in spaceDusts) {
        if ([backgroundNode convertToWorldSpace:spaceDust.position].x < -spaceDust.contentSize.width) {
            [backgroundNode incrementOffset:ccp(2*spaceDust.contentSize.width,0) forChild:spaceDust];
        }
    }
}

これから私を助けてください よろしくお願いします

4

2 に答える 2

1

これを試してください

if (backgroundNode.position.y <-screenSize.height*2)
            backgroundNode.position = ccp(0,0); 

init メソッドは 1 回だけ呼び出されるため、行っているアプローチは 1 回だけ実行されるため、update メソッドで backgroundNode の Position を 0 に再度設定する必要があります。ここで倍数は異なる場合があります

于 2013-08-28T11:38:27.267 に答える