Ios 移动背景停止在Spritekit上重复

Ios 移动背景停止在Spritekit上重复,ios,background,sprite-kit,Ios,Background,Sprite Kit,这是我的代码,让我的背景重复,只有一个背景,它应该永远重复: SKTexture* bgTexture = [SKTexture textureWithImageNamed:@"nightbackground"]; bgTexture.filteringMode = SKTextureFilteringNearest; SKAction* movebgSprite = [SKAction moveByX:-bgTexture.size.width*2 y:0 duration:0.1 * bg

这是我的代码,让我的背景重复,只有一个背景,它应该永远重复:

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];
SKTexture*bgTexture=[SKTexture TextureWithimageName:@“nightbackground”];
bgTexture.filteringMode=SKTextureFilteringNearest;
SKAction*movebgSprite=[SKAction moveByX:-bgTexture.size.width*2Y:0持续时间:0.1*bgTexture.size.width*2];
SKAction*resetbgSprite=[SKAction moveByX:bgTexture.size.width*2Y:0持续时间:0];
SKAction*MoveBGSpriteSever=[SKAction repeatActionForever:[SKAction sequence:@[movebgSprite,resetbgSprite]];
对于(int i=0;i<2+self.frame.size.width/(bgTexture.size.width*2);+i){
SKSpriteNode*sprite=[SKSpriteNode spriteNodeWithTexture:bgTexture];
[雪碧设置比例:1.0];
sprite.zPosition=-20;
sprite.position=CGPointMake(self.size.width/2,self.size.height/2);
[精灵运行动作:永远移动精灵];
[self addChild:sprite];

但它不会永远重复,它会在一段时间后停止。它可能有什么问题?

这种情况将在横向方向上工作,并使视图不断向左(-x方向)滚动。您可以创建两个背景精灵节点实例,并将它们相邻放置。当第一个实例完全从屏幕左侧滚动时,它将放置在第二个背景精灵节点的右侧

在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];
}
for(int i=0;i<2;i++){
SKSpriteNode*bg=[SKSpriteNode SPRITENODEWITHIMAGENAME:@“背景”];
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);
    }

}];
[使用block:^(SKNode*节点,BOOL*停止)的自枚举childnodes,名称:@“background”{
SKSpriteNode*bg=(SKSpriteNode*)节点;
bg.position=CGPointMake(bg.position.x-1.5,bg.position.y);

如果(bg.position.x)的可能重复,请不要转发相同的问题,编辑您的原始问题如果您需要对其进行任何更改,请在其上回复