2014-02-23 27 views
0

重複這是我的代碼,使我的背景重複,只是一個背景,它應該永遠重複:運動背景停止對Spritekit

SKTexture* bgTexture = [SKTexture textureWithImageNamed:@"nightbackground"]; 
bgTexture.filteringMode = SKTextureFilteringNearest; 

SKAction* movebgSprite = [SKAction moveByX:-bgTexture.size.width*2 y:0 duration:0.1 * bgTexture.size.width*2]; 
SKAction* resetbgSprite = [SKAction moveByX:bgTexture.size.width*2 y:0 duration:0]; 
SKAction* movebgSpritesForever = [SKAction repeatActionForever:[SKAction sequence:@[movebgSprite, resetbgSprite]]]; 

for(int i = 0; i < 2 + self.frame.size.width/(bgTexture.size.width * 2); ++i) { 
    SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:bgTexture]; 
    [sprite setScale:1.0]; 
    sprite.zPosition = -20; 
    sprite.position = CGPointMake(self.size.width/2, self.size.height/2); 
    [sprite runAction:movebgSpritesForever]; 
    [self addChild:sprite]; 

不過,這並不永遠重複,但一段時間後停止。它可能有什麼問題?

+0

可能重複的[精靈工具包:視差背景不重複(http://stackoverflow.com/questions/21969989/sprite-kit-parallax-background-does-not-repeat) – LearnCocos2D

+0

請不要重新發布相同的問題,編輯您的原始問題,如果您需要對其進行任何更改 – LearnCocos2D

+0

請回復他們的問題 – user1483652

回答

1

這種情況下將以橫向方向工作,並使視圖重複向左無限滾動(-x方向)。您創建背景SKSPriteNode的兩個實例並將它們放在一起。當第一個從屏幕左側完全滾動時,它將放置在第二個背景精靈節點的右側。

在didMoveToView:

for (int i = 0; i < 2; i++) { 
    SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"background"]; 
    bg.anchorPoint = CGPointZero; 
    bg.position = CGPointMake(i * bg.size.width, 0); 
    bg.name = @"starBackground"; 
    [self addChild:bg]; 
} 

在更新:環

[self enumerateChildNodesWithName:@"background" usingBlock:^(SKNode *node, BOOL *stop) { 

    SKSpriteNode *bg = (SKSpriteNode *)node; 
    bg.position = CGPointMake(bg.position.x - 1.5, bg.position.y); 

    if (bg.position.x <= -bg.size.width) { 
     bg.position = CGPointMake(bg.position.x + bg.size.width * 2, bg.position.y); 
    } 

}];