Ios 手动设置纹理动画时的SKSpriteNode拉伸

Ios 手动设置纹理动画时的SKSpriteNode拉伸,ios,animation,sprite-kit,stretch,Ios,Animation,Sprite Kit,Stretch,我有一个相当简单的动画,有8个大小相同的图像。我没有使用内置的动画方法,因为我想在运行中手动控制动画的速度。我使用预加载的SKTexture并执行[object setTexture:texture];更新的内部:currentTime方法 问题是,有时纹理确实会扭曲/拉伸。经过大量调试后,我将其范围缩小到仅在节点静止时发生。事实上,如果我将节点移动一个像素,然后像这样向后移动,则问题永远不会发生: [self setTexture:texture]; CGPoint currentPositi

我有一个相当简单的动画,有8个大小相同的图像。我没有使用内置的动画方法,因为我想在运行中手动控制动画的速度。我使用预加载的SKTexture并执行[object setTexture:texture];更新的内部:currentTime方法

问题是,有时纹理确实会扭曲/拉伸。经过大量调试后,我将其范围缩小到仅在节点静止时发生。事实上,如果我将节点移动一个像素,然后像这样向后移动,则问题永远不会发生:

[self setTexture:texture];
CGPoint currentPosition = self.position;
self.position = CGPointMake(currentPosition.x + 1, currentPosition.y + 1);
self.position = currentPosition;
这让我觉得非常讨厌。我认为在引擎盖下,它会触发父节点上的重画。还有其他人经历过吗?我有两个主要问题。1) 原因是什么?2)我如何在不诉诸黑客的情况下解决这个问题

这里是一个正常的框架和一个拉伸版本(我为质量道歉,占位符艺术…)


编辑:在几句评论之后,我意识到我忘了提到我缩放的节点大小小于纹理的大小。即使纹理大小相同,将新纹理应用到较小的节点也会导致错误。

似乎在使用sprite节点设置纹理时不会更改其大小,直到移动、调整大小等

可以通过在设置纹理后手动设置来解决此问题

[spriteNode setTexture:texture];
[spriteNode setSize:texture.size];

其他人也有同样的问题——这可能是SK中的一个bug。也许这在ios 7.1测试版中已经修复了。请尝试添加[self-setSize:texture.size]@为我工作的DobroćudniTapir。我更喜欢那样。我一直在缩小精灵的比例,所以现在每次应用纹理时我都会重新缩放它。你想加上这个作为回答,这样我就可以接受了吗?