ios - 手动动画纹理时 SKSpriteNode 拉伸(stretch)

标签 ios animation sprite-kit stretch

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

问题是有时纹理会变得非常扭曲/拉伸(stretch)。经过大量调试后,我将其缩小为仅在节点静止时发生。事实上,如果我将节点移动一个像素并像这样将其移回原位,问题就不会发生:

[self setTexture:texture];
CGPoint currentPosition = self.position;
self.position = CGPointMake(currentPosition.x + 1, currentPosition.y + 1);
self.position = currentPosition;

这让我觉得非常 hacky。我认为在幕后,它触发了父节点上的重绘。还有其他人经历过吗?我有两个主要问题。 1)原因是什么?和 2) 如何在不诉诸黑客的情况下解决这个问题?

这是一个普通的框架和一个拉伸(stretch)的版本(我为质量、占位符艺术道歉......)

not-stretched streched

编辑:经过一些评论后,我意识到我忘了提及我将节点的大小缩放为小于纹理的大小。即使纹理大小相同,将新纹理应用于尺寸较小的节点也会导致错误。

最佳答案

似乎在使用 setTexture: 设置纹理后 Sprite 节点不会改变它的大小,直到被移动、调整大小等......

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

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

关于ios - 手动动画纹理时 SKSpriteNode 拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21793145/

相关文章:

iphone - 如何使用 MPMoviePlayerController 播放视频?

javascript - 有什么方法可以使 window.scrollTo(0, 1) 流畅地动画化?

ios - "The app' s Info.plist 必须包含 NSPhotoLibraryAddUsageDescription 的崩溃是什么?

javascript - 从左下到右上绘制复选标记CSS动画

swift - 根据节点的旋转对节点施加力

ios - 初始化 sprite 对象时没有 'hero' 的已知类方法?

swift - Sprite Kit 游戏在 tvOS 9.1 和 iOS 9.2 上的游戏结束时崩溃

ios - 无效的条形码 - Google Authenticator - iOS - 用 = 填充

jquery - 使用滚动事件链接 CSS3 动画/变换

android - Android中的全景背景动画