可能重复:
What are the downsides to using Spark over Halo in Flex?
Flex3和Flex4中Halo和Spark有什么区别?
答案 0 :(得分:5)
许多其他答案都集中在主题上;虽然Halo和Spark确实有默认主题;我认为这就像是将本田思域与保时捷进行比较并专注于轮胎。
Spark和Halo之间的主要区别在于用于构建组件的底层架构。 Halo is the Flex 2[and 3] architecture并具有createChildren(),commitProperties(),measure()和updateDisplayList()等方法。要构建组件,您将在自己的组件中覆盖这些方法,这会将UIComponent扩展到类层次结构中的某个位置。有时这被称为MX架构。
在Halo方法中,所有视觉设计和业务逻辑都合并到同一个类文件中。 Spark架构是Flex 4中引入的new architecture,在构建和构建组件时可以提供更大的灵活性。它使用两个类系统,一个类是包含业务逻辑的组件类,另一个类是将执行可视化显示的外观类。
Spark组件有一个名为SkinnableComponent的新父组件。 SkinnableComponent实际上扩展了UIComponent,因此原始生命周期方法仍然存在;但SkinnableComponent提供了新的钩子,因此我们以不同的方式创建组件。例如,我们将覆盖partAdded()或partRemoved(),而不是覆盖createChildren()。作为另一个示例,所有updateDisplayList()和measure()代码都移动到外观类中。
此外,Halo和Spark还有一组独立的UI组件。众所周知,Spark组件更轻,更灵活,但它们的功能也较少。例如,Spark Combobox没有与Halo Combobox相同的API。
围绕相关组件生态系统的工具也是一个考虑因素。例如,Flash Catalyst仅适用于Spark组件。
答案 1 :(得分:2)
阅读Adobe关于该主题的文档:
http://www.adobe.com/devnet/flex/articles/flex3and4_differences.html
州内的差异最初让我陷入了一个循环。
答案 2 :(得分:2)
Spark是Flash构建器4(Flex4)引入的新主题(除了Halo)。这两个主题支持不同类型的风格。使用Flex4,您可以根据应用程序的设计考虑因素选择要使用的那个。如果要在组件上使用自定义外观,Spark会更方便;另一方面,Halo具有更多内置的组件样式。