2011-06-21 18 views
2

私はCocos2D 0.99.5を使用しています。私は、バックグラウンドスプライトが追加されたCCParallaxNodeを持っています。何らかの理由で、地図が少し動き回るまで表示されません。プレイヤーの動きにゆっくりとスクロールします。Cocos2D:地図を少し動かすまで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]; 
    } 
} 

答えて

0

私はあなたのinitのものの終わりに一度更新機能のものを呼ぶべきだと思う

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

条件なしで、最初に設定します。

関連する問題