2011-05-03 86 views

回答

2

Spark是使用Flash Builder 4(Flex4)引入的新主題(除Halo外)。這兩個主題支持不同類型的風格。藉助Flex4,您可以根據應用程序的設計考慮選擇要使用哪一個。如果你想在組件上使用自定義皮膚,Spark更方便;另一方面,Halo具有更多內置組件的樣式。

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提供了新的鉤子,因此我們以不同方式創建組件。比如重寫createChildren(),我們會覆蓋partAdded()或partRemoved()。作爲另一個例子,所有的updateDisplayList()和measure()代碼都被移入皮膚類中。

此外,Halo和Spark還有一組獨立的UI組件。火花組件以更輕,更靈活而聞名,但它們也具有較少的特徵。例如,Spark Combobox沒有與Halo Combobox相同的API。

圍繞相關組件生態系統的工具也是一個考慮因素。例如,Flash Catalyst將僅適用於Spark組件。

+1

很好的回答! Halo/MX和Spark都有明顯的重疊,這讓人非常困惑,並且傷害了新Flex開發人員的學習曲線。因此Spark組件中的「原始生命週期方法仍然存在」這一事實!太多的方法!不過,你的簡短解釋有助於澄清事情。看起來你可以根據個人喜好混合搭配......例如:目前沒有「日期選擇器」在火花?沒問題...現在就用MX!呃......我想。 :) – Russ 2011-06-03 04:44:29