【发布时间】:2018-10-03 19:29:57
【问题描述】:
我正在考虑一个简单的应用程序,它有四个可以在屏幕上拖动的字符。在拖动它们时“摆动”——这就是动画。如果它们足够接近某个位置,它们就会捕捉到一个位置……就像在拼图中一样。没有动画,这一切在 UIKit 中都很简单。
我的第一个想法是在一个普通的旧UIView 中渲染每个字符在其自己的SKView 中。我可以将UIGestureRecognizers 附加到每个SKView 以跟踪点击和拖动。但我认为这意味着每个字符都有单独的GameScenes/SKView。这似乎违背了 SpriteKit 的原则。
另一种选择是带有四个精灵的单个GameScene。但我仍然需要跟踪和拖动它们,我不知道如何在全 SpriteKit 应用程序中做到这一点。
任何一种方法都比另一种方法更好吗?
【问题讨论】:
-
对于性能问题,第二种方式是可行的。而且由于所有的 sknode 都来自 UIResponder,所以处理触摸事件并不难。
-
我根本不会使用 SpriteKit。 UIKit 能够制作动画
-
我有大约 200 种不同的动画,动画师将它们以 spritesheets 的形式发送给我。而且我认为 SpriteKit 比
UIImageView.animationImages更好地处理内存。而且我需要为每个精灵切换很多动画。 -
如果您的动画师在精灵表中工作,那么技术就无关紧要了。您必须将精灵表分解为单独的图像/文件才能利用 SKTextureAtlas。如果您已经在 UIKit 中完成了所有工作,那么您只是在浪费时间和精力在 sprite kit 中从头开始重建它,全部用于动画。
-
总共将有大约 50,000 张图像,即使使用严格的命名约定,也很难看出我将如何将工作表分解为单独的文件。但我的问题是:假设我这样做。那我怎么做动画呢?使用
UIImageView's动画方法?使用 Timers 或CADisplayLinks或什么?似乎依靠 SpriteKit 来制作动画应该是最简单的。 FWIW,我在我的 OP 中第 2 段(“我的第一个想法”)的策略上取得了更大的成功。但这与可可颗粒背道而驰。你想把它离线吗?我仍然不知所措。
标签: ios sprite-kit uikit