许多其他答案都集中在主题上; 虽然Halo和Spark确实有默认主题; 我认为这就像是将本田思域与保时捷进行比较,并专注于轮胎.
Spark和Halo之间的主要区别在于用于构建组件的底层架构. Halo是Flex 2 [和3]架构,具有createChildren(),commitProperties(),measure()和updateDisplayList()等方法.要构建组件,您将在自己的组件中覆盖这些方法,这会将UIComponent扩展到类层次结构中的某个位置.有时这被称为MX架构.
在Halo方法中,所有可视化设计和业务逻辑都组合到同一个类文件中.Spark架构是Flex 4中引入的一种新架构,可在构建和构建组件时提供更大的灵活性.它使用两个类系统,一个类是包含业务逻辑的组件类,另一个类是将执行可视化显示的外观类.
Spark组件有一个名为SkinnableComponent的新父组件.SkinnableComponent实际上扩展了UIComponent,因此原始生命周期方法仍然存在; 但SkinnableComponent提供了新的钩子,因此我们以不同的方式创建组件.例如,我们将覆盖partAdded()或partRemoved(),而不是覆盖createChildren().作为另一个示例,所有updateDisplayList()和measure()代码都移动到外观类中.
此外,还有一组用于Halo和Spark的独立UI组件.众所周知,Spark组件更轻,更灵活,但它们的功能也较少.例如,Spark Combobox没有与Halo Combobox相同的API.
围绕相关组件生态系统的工具也是一个考虑因素.例如,Flash Catalyst仅适用于Spark组件.