animation - 如何在 Apple Watch 上制作矢量图形动画?
问题描述
由于当今大多数设备都有 CPU 和 GPU,因此对于希望制作动画矢量图形(如使圆圈变大或四处移动)的程序员的通常建议是定义图形项目一次,然后使用线性变换对其进行动画处理。这样,(在大多数平台和框架上)GPU 可以完成动画工作,因为使用线性变换的光栅化可以在 GPU 上非常快速地完成。如果程序员选择在 CPU 上绘制每一帧,它很可能会慢得多并且消耗更多的能量。
我知道 Watch 不是您想要使用复杂动画重载的设备,但至少主屏幕似乎确实使用了这种动画线性变换:
此外,大多数表盘都以某种方式进行动画处理,例如移动的秒针和分针。
但是,WatchKit 控件没有属性,我在文档.transform
中找不到太多内容——那里甚至没有提到“动画”和“图形”这两个词。
因此,我目前看到的唯一方法是将矢量图形绘制到 aCGContext
然后将结果作为图像控件放入图像控件,如此处UIImage
所述。但这似乎并不真正节能。这正是我们通常希望尽可能避免的那种“CPU 像素绘图”。我认为它不节能,因为如果我在 100x100 像素的图像缓冲区上绘制,图像必须缩放到实际的 Watch 屏幕尺寸,所以我们每帧有两个实际的绘制过程。
是否有官方推荐的节能方式在 Apple Watch 上制作动画?
或者,换句话说,我们可以像在主屏幕或表盘上动画一样制作动画吗?
解决方案
似乎 SpriteKit 是答案。您可以创建SKScene
和节点对象,然后将它们显示在WKInterfaceSKScene
.
推荐阅读
- c# - 如何从ini文件中获取所有部分名称
- python - Anaconda 选择正确的环境但错误的 sys.path?
- c - 使用 DMA for SPI6 提高性能
- python - 这段代码的错误是什么(CNN 和 SVM 分类)
- python - 如何将欧几里得距离转换为百分比置信度?
- typescript - 如何在 react-native 中忽略操作系统字体?
- hyperledger-fabric - 如何从超级账本结构链码中以字符特定字符开头的账本中查询所有状态?
- xml - 如何使用 XQuery 跟踪 XML 列表中的重复项?
- javascript - 从 Kendo Grid 生成的 Excel 中删除 HTML
- php - 如何修复通过 PHP 下载时损坏的 PDF 文件