如何在 Apple Watch 上为矢量图形制作动画?
How to animate vector graphics on the Apple Watch?
由于当今大多数设备都有一个 CPU 和一个 GPU,对于希望制作动画矢量图形(例如使圆圈变大或四处移动)的程序员来说,通常的建议是一次定义图形项,然后使用线性变换为其设置动画。这样,(在大多数平台和框架上)GPU 可以完成动画工作,因为使用线性变换的光栅化可以在 GPU 上非常快速地完成。如果程序员选择在 CPU 上绘制每一帧,它很可能会慢得多并且消耗更多能量。
我知道 Watch 不是你想用复杂动画重载的设备,但至少主屏幕似乎确实使用了这种动画线性变换:
此外,大多数表盘在某种程度上都是动画的,例如移动的秒针和分针。
但是,WatchKit 控件没有 .transform
属性,而且我在 documentation 中找不到太多内容 - “动画”和“图形”这两个词都没有甚至在那里提到。
因此,我目前看到的唯一方法是将矢量图形绘制为 CGContext
,然后将结果作为 UIImage
放入图像控件,如 所述.但这似乎并不真正节能。这正是我们通常希望尽可能避免的那种“CPU 像素绘图”。我认为它不是节能的,因为如果我在 100x100 像素的图像缓冲区上绘制,图像必须缩放到实际的手表屏幕尺寸,所以我们每帧有两个实际的绘制过程。
有没有官方推荐的在Apple Watch上做动画的节能方式?
或者,换句话说,我们可以像在主屏幕或表盘上那样为事物设置动画吗?
似乎 SpriteKit 就是答案。您可以创建 SKScene
和节点对象,然后将它们显示在 WKInterfaceSKScene
.
中
由于当今大多数设备都有一个 CPU 和一个 GPU,对于希望制作动画矢量图形(例如使圆圈变大或四处移动)的程序员来说,通常的建议是一次定义图形项,然后使用线性变换为其设置动画。这样,(在大多数平台和框架上)GPU 可以完成动画工作,因为使用线性变换的光栅化可以在 GPU 上非常快速地完成。如果程序员选择在 CPU 上绘制每一帧,它很可能会慢得多并且消耗更多能量。
我知道 Watch 不是你想用复杂动画重载的设备,但至少主屏幕似乎确实使用了这种动画线性变换:
此外,大多数表盘在某种程度上都是动画的,例如移动的秒针和分针。
但是,WatchKit 控件没有 .transform
属性,而且我在 documentation 中找不到太多内容 - “动画”和“图形”这两个词都没有甚至在那里提到。
因此,我目前看到的唯一方法是将矢量图形绘制为 CGContext
,然后将结果作为 UIImage
放入图像控件,如
有没有官方推荐的在Apple Watch上做动画的节能方式?
或者,换句话说,我们可以像在主屏幕或表盘上那样为事物设置动画吗?
似乎 SpriteKit 就是答案。您可以创建 SKScene
和节点对象,然后将它们显示在 WKInterfaceSKScene
.