Cocos2D: CCParallaxNode не отображается, пока я немного не переместил карту - PullRequest
2 голосов
/ 22 июня 2011

Я использую Cocos2D 0.99.5.У меня есть CCParallaxNode с добавленными фоновыми спрайтами.По какой-то причине ни один из них не отображается, пока я не начну, моя карта начнет немного двигаться.Прокрутите медленно с движением игроков.

Я добавил это в init:

    winSize = [CCDirector sharedDirector].winSize;

    bgMountainsMax = floor(winSize.width/240)+1;

    if((int)winSize.width%240 > 0){
        bgMountainsBumper = ((int)winSize.width%240)/bgMountainsMax;
    }else{
        bgMountainsBumper = 0;
    }

    backgroundNode = [CCParallaxNode node];
    [self addChild:backgroundNode z:-1];

    CGPoint mountainSpeed = ccp(0.5, 0.5);

    bgMountains = [[NSMutableArray alloc] initWithCapacity: bgMountainsMax];

    for(int i=0; i<bgMountainsMax; ++i){
        mountain = [CCSprite spriteWithFile:@"mountainBG1.png"];
        mountain.opacity = 80;
        [bgMountains insertObject:mountain atIndex:i];

        [backgroundNode addChild:[bgMountains objectAtIndex:i] z:0 parallaxRatio:mountainSpeed positionOffset:ccp((240*i)+(bgMountainsBumper*i),98)];

    }

И добавил это в обновление:

    for (CCSprite *mountainNum in bgMountains) {
    if ([backgroundNode convertToWorldSpace:mountainNum.position].x < -(240/2)) {
        [backgroundNode incrementOffset:ccp(winSize.width+(240),0) forChild:mountainNum];
    }

    if ([backgroundNode convertToWorldSpace:mountainNum.position].x > winSize.width+(240/2)) {          
        [backgroundNode incrementOffset:ccp(-(winSize.width+240),0) forChild:mountainNum];
    }
}

1 Ответ

0 голосов
/ 09 июня 2013

Я думаю, вы должны вызывать функцию обновления один раз в конце вашей инициализации

[backgroundNode incrementOffset:ccp(winSize.width+(240),0) forChild:mountainNum];
[backgroundNode incrementOffset:ccp(-(winSize.width+240),0) forChild:mountainNum];

без условий, чтобы установить ее изначально.

...