是的,对于你的第一个问题,使用Core Graphics(Quartz或CG)进行绘图是CPU密集型的,会极大地减慢应用程序的各个方面......如果准备、绘制、合成和呈现占用了帧时间,你的应用程序将明显停顿,并降低帧率以完成绘图。即使这少于1秒每帧。
当输出大PDF时,你会看到这种情况。Core Graphics繁忙地渲染,牺牲了所有其他活动,青睐输出质量而非其他因素。部分原因是因为它的起源是PostScript,针对印刷品输出,其中质量是主要目标,但也因为它一直是一个面向图像创建而非动画的质量中心框架。
- SpriteKit与CA相比较而言,比SpriteKit/CA与CG更加微妙
了解这些框架的不同优先级、功能和性能特征,可以揭示如何最好地将它们组合使用,并在什么时候选择它们的排他性。
在CA和CG的情况下,命名约定传达了依赖性和互操作性,这并不一定真实、必要或存在,但它们可以被有效地结合使用。只是需要做一个平衡,因为它们在某些方面的表现非常不同。
CG = Core Graphics
CA = Core Animation
Core Animation就是其名字所描述的:非常擅长动画制作。但它也有出色的内容创建工具。这些可能会让你感到惊讶,因为它并不是经常提到的框架。许多其关键能力都被UIKit包装器所隐藏。
您提供的文章完全避免了讨论Core Animation的内容创建工具,这些工具并不是半吊子,而且相当好。特别是对于动画框架而言。你可以完全使用Core Animation制作所需的所有组件和完美的时钟动画,而不使用任何较慢的Core Graphics绘制。我不确定为什么该文章没有说明这些功能。
关于Core Animation内容创建层,以下是两个例子:
CAShapeLayer 可以制作和动画任何形状或组合形状的绘图。
CATextLayer 完全支持NSAttributedString及其所有属性,并且可以对它们进行动画处理。
将Core Animation视为受Flash和QuickTime启发的、闭源、平台特定的API,用于高性能动画和可视化交互式创建。
作为一种动画和交互框架,Core Animation 是比 SpriteKit 更优秀、更高效的图形、动画和事件游戏引擎,但没有 SpriteKit 中包含的某些特定附加组件。
CALayers 不仅仅是简单的东西。它们还能够绘制内容,并进行遮罩。然后以各种奇妙的方式高度动画化,包括伪3D旋转空间,完全具有透视失真效果。
在 Core Animation 中缺少而在 SpriteKit 中包含的功能有:
1. 声音:在 SK 中有两种不同的播放声音的方法,在 CA 中没有,需要自己实现。
2. 游戏循环:虽然 SK 优化了事件,但也围绕着一个游戏循环构建起来。
3. 物理性质:您需要使用 UIKit Dynamics 与 Core Animation Layers 一起使用才能获得物理性质。
4. 图像打包:需要为纹理制作自己的文件处理和解压缩。
5. 可视化场景编辑器:从设计师的角度来看,可能不是什么损失。
6. 可视化粒子编辑器:这更像是一种损失。没有它很难制作出好的效果。
7. SKActions:但 CA 有隐式/显式动画和/或 CAKeyFrameAnimation。
使用 SpriteKit 的明显负面因素有:
1. 当需要时,它与 UIKit 及其出色的布局能力不兼容。
2. 因为它被赋予了最少(看起来是)的资源和错误测试,所以会出现奇怪的错误。
3. 提供大量琐碎的 Q&A 支持的用户社区非常小。
4. Apple 几乎没有提供任何支持,他们的论坛是悲伤的荒地。
5. 文档糟糕,大部分已过时或毫无意义。
6. 没有游戏引擎常见的各种示例和演示。
7. 理解工作流程、范例和进程是通过渗透学习获得的。
8. 场景编辑器很慢,设计很差,营养不良,并且与 Xcode 不兼容。
9. 对于标签和其他文本展示需求,没有 NSAttributedString 的支持。拥有消费者和创意计算历史上最大的现金储备,但是在创新创意工具方面却失败了。这感觉(和外观)更像是对苹果核心价值观/传统以及那些在过去几十年中致力于学习和使用苹果中心创意工具的人们的背叛。毫无疑问,“创意酷”的帮助下苹果变得“酷”,为iPod的期望和采用率提供了iPhone和iPad的推动力。
由于对iPhone的不考虑后果的贪婪聚焦,品牌的一些光彩肯定会褪色。这令人担忧的一个简单原因是这些决策的因素之一:SpriteKit的采用率极低。苹果可能会决定削减已经很勉强的开发团队来获得更大的利润,因为在新的苹果公司中,利润似乎胜过所有其他动机。与iPhone带来的利润相比,创新框架和软件开发资源的投入远远不足。
苹果没有表现出理解需求或渴望积极、热情地投资于使新框架变得尽善尽美或稳定的迹象。验证并吸引开发人员采用新框架需要透明的努力,苹果似乎不愿意做出这种努力。对于学习、采用和使用新框架所需的时间和精力,苹果似乎轻视和鄙视。而且,在他们的期望开发人员将冒着采用仅限于苹果的技术的风险(这些技术可能会在追求利润的时候被关闭)的假设下,非常武断。
SpriteKit和SceneKit的孕育期过长,并且之前版本存在一些致命性错误。与极其糟糕的开发者沟通以及对编码器信心和采用率的增长毫无关心,这导致了真正低迷的采用率。
如果没有强大的采用率,苹果可能会决定放弃SpriteKit,而不是让它像现在一样蹒跚前行。
公平地说,cocos2D-X的持续成功直接源于苹果未能使SpriteKit成为它应该成为的东西。完全失败的支持、沟通、管理和解决问题,无论是及时还是体贴的方式,都产生了强烈的愿望,避免使用SpriteKit,并在那些使用SpriteKit的开发人员中产生了很多不确定和担忧。
拥有近乎无限的开发人才预算,这种事情应该成为苹果的尴尬和批评来源,并引发对其其他“倡议”和“创新”尝试的强烈关注。出于我不理解的原因,批评性地思考苹果的所作所为以及这些选择所带来的影响和影响力似乎并不被认为是正确的。
我认为公平地说,他们雇用的内部软件开发人员和软件输出质量远远不能与iOS平台的硬件销售、应用商店收入、覆盖率和市场影响力的增长相匹配