SpriteKit SKAction moveTo:当应用程序进入后台时扭曲

问题描述

在SpriteKit游戏中,我使用永久重复的SKAction moveTo:在Sprite上显示金属光泽。它基本上是一个SKCropNode遮罩,它从一个位置移动到另一个位置,暂停,然后移回到其起始位置,然后重复。 maskNode本身的动画方向相反。

即使数百个屏幕上运行了数百个小时,这仍然可以正常工作。

但是,当应用程序转到后台并返回时,这些节点的所有位置都已更改。动画仍然继续,但是位置错误。屏幕上的任何地方都有金属光泽,但应有的地方除外。

我没有更改UIApplication委托方法中的任何内容。即使我在应用程序处于后台时pause SKView,也会发生完全相同的事情。

// create the shine node
    SKSpriteNode *shine = [SKSpriteNode spriteNodeWithTexture:@"metal_shine"];
    shine.size = self.size;

// create the mask node
    SKSpriteNode *maskNode = [SKSpriteNode spriteNodeWithTexture:@"disk_mask"]];
    maskNode.size = self.size;

// create the crop node
    SKCropNode *cropNode = [[SKCropNode alloc] init];
    [cropNode addChild:shine];
    cropNode.maskNode = maskNode;
    cropNode.maskNode.position = CGPointMake(self.size.width * 0.5,self.size.height * -0.5);
    cropNode.position = CGPointMake(self.size.width * -0.5,self.size.height * 0.5);
    [self addChild:cropNode];
    
// add actions
    SKAction *delayAction = [SKAction waitForDuration:1.0];
    SKAction *pauseAction = [SKAction waitForDuration:3.0];

    SKAction *resetActionMaskNode = [SKAction moveTo:CGPointMake(self.size.width * 0.5,self.size.height * -0.5) duration:0];
    SKAction *moveActionMaskNode = [SKAction moveTo:CGPointMake(self.size.width * -0.5,self.size.height * 0.5) duration:0.6];
    SKAction *resetActionCropNode = [SKAction moveTo:CGPointMake(self.size.width * -0.5,self.size.height * 0.5) duration:0];
    SKAction *moveActionCropNode = [SKAction moveTo:CGPointMake(self.size.width * 0.5,self.size.height * -0.5) duration:0.6];
    
    SKAction *repeatActionMaskNode = [SKAction repeatActionForever:[SKAction sequence:@[resetActionMaskNode,moveActionMaskNode,pauseAction]]];
    SKAction *repeatActionCropNode = [SKAction repeatActionForever:[SKAction sequence:@[resetActionCropNode,moveActionCropNode,pauseAction]]];


// go
    [cropNode.maskNode runAction:[SKAction sequence:@[delayAction,repeatActionMaskNode]] withKey:@"idleAnimation"];
    [cropNode runAction:[SKAction sequence:@[delayAction,repeatActionCropNode]] withKey:@"idleAnimation"];

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...