Flex 3 与 Flex 4 之间的区别(3)

分类:Flash_Flex_AIR| 发布:camnprbubuol| 查看: | 发表时间:2010/11/7

新增组件和容器

如前所述,Flex 4 SDK 引入了许多使用新架构的新组件类,它们应当可以令外观和其他自定义操作更简单。下表列出了 Flex 3 MX 组件及其 Flex 4 Spark 对应组件:

Flex 3 MX 组件Flex 4 beta Spark 组件
mx.controls.Buttonspark.components.Button
mx.controls.ButtonBarspark.components.ButtonBar
mx.controls.CheckBoxspark.components.CheckBox
mx.controls.ComboBoxspark.components.DropDownList(不可编辑)
mx.controls.HorizontalListspark.components.List(带一个 HorizontalLayout)
mx.controls.HRulespark.primitives.Line
mx.controls.HScrollBarspark.components.HScrollBar
mx.controls.HSliderspark.components.HSlider
mx.controls.Imagespark.primitives.BitmapImage(不支持外部图像)
mx.controls.LinkBarspark.components.ButtonBar(带一个自定义外观)
mx.controls.LinkButtonspark.components.Button(带一个自定义外观)
mx.controls.Listspark.components.List
mx.controls.NumericStepperspark.components.NumericStepper
mx.controls.RadioButtonspark.components.RadioButton
mx.controls.RadioButtonGroupspark.components.RadioButtonGroup
mx.controls.TextAreaspark.components.TextArea
mx.controls.TabBarspark.components.TabBar
mx.controls.TextInputspark.components.TextInput
mx.controls.TileListspark.components.List(带一个 TileLayout)
mx.controls.ToggleButtonBarspark.components.ButtonBar
mx.controls.VideoDisplayspark.components.VideoPlayer
mx.controls.VRulespark.primitives.Line
mx.controls.VScrollBarspark.components.VScrollBar
mx.controls.VSlider

spark.components.VSlider

mx.core.Applicationspark.components.Application
mx.core.Windowspark.components.Window
mx.core.WindowedApplicationspark.components.WindowedApplication
mx.containers.ApplicationControlBarspark.components.Application(带 controlBarContent)
mx.containers.Canvasspark.components.Group
mx.containers.ControlBarspark.components.Panel(带 controlBarContent 属性)
mx.containers.HBoxspark.components.HGroup
mx.containers.Panelspark.components.Panel
mx.containers.Tilespark.components.Group(带一个 TileLayout)
mx.containers.VBoxspark.components.VGroup

Adobe 鼓励您与 Spark 组件一起使用 MX 组件和容器。由于 Adobe 在同一基类 (UIComponent) 上构建组件,Spark 与 MX 之间应当可以实现全面的可互操作性。下表列出了目前没有 Spark 直接等效类的组件和容器。

Flex 3 类,没有直接的 Flex 4 beta 对应类
mx.controls.Alert
mx.controls.ColorPicker
mx.controls.DataGrid
mx.controls.DateChooser
mx.controls.DateField
mx.controls.Menu
mx.controls.MenuBar
mx.controls.PopUpButton
mx.controls.PopUpMenuButton
mx.controls.ProgressBar
mx.controls.RichTextEditor
mx.controls.Tree
mx.containers.Accordion
mx.containers.DividedBox
mx.containers.Form
mx.containers.Grid
mx.containers.TabNavigator
mx.containers.TitleWindow
mx.containers.ViewStack

要将 MX 导航器(ViewStack、Accordion、TabNavigator)用于 Spark 组件,导航器的子代应当是一个 NavigatorContent 组件。否则,您无法在 MX 导航器中使用 Spark 基元。此处是一个示例:

<mx:ViewStack id="vs" selectedIndex="{tb.selectedIndex}">
<s:NavigatorContent label="bar">
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:Label text="bar" />
<s:TextInput />
</s:NavigatorContent>
</mx:ViewStack>

状态语法中的变化

Flex 4 将状态功能升级为一个全面的 MXML 语言功能。因此,您可能会发现状态更灵活、更直接。新的状态语法内联程度更高,允许在上下文中指定状态特定变化。以下是 Flex 4 语法中的主要区别:

  • 只有状态是在状态阵列中定义的。
  • 在新的状态语法中,不能使用 AddChildRemoveChild。您必须使用 includeInexcludeFrom 属性在组件上定义组件在特定状态中的角色。

在以下 Flex 3 示例中,仅当文档的 currentStatesubmitState 时,才使用状态包含一个 Button 并删除一个 TextInput。对于较复杂的状态,这种方法可以做到十分详细。

<mx:states>
<mx:State name="submitState" basedOn="">
<mx:AddChild relativeTo="{loginForm}" >
<mx:Button label="submit" bottom="10" right="10"/>
</mx:AddChild>
<mx:RemoveChild target="{firstTextInput}"/>
</mx:State>
</mx:states>

<mx:TextInput id="firstTextInput" />
<mx:Canvas id="loginForm" />

以下是一段使用 includeInexcludeFrom、更简单的 Flex 4 代码。

<s:states>
<s:State name="submitState" />
</s:states>
<s:TextInput id="firstTextInput" excludeFrom="submitState" />
<s:Group id="loginForm" >
<s:Button label="submit" bottom="10" right="10" includeIn="submitState"/>
</s:Group>
  • SetPropertySetStyleSetEventHandler 已替换为新的语法,它允许您限定具备特定状态标识符的 MXML 属性值。

在以下 Flex 3 示例中,代码为 submitState 中的一个 Button 定义了属性、样式和事件。

<mx:states>
<mx:State name="submitState" basedOn="">
<mx:SetProperty target="{submitButton}" name="label" value="submit" />
<mx:SetStyle target="{submitButton}" name="textDecoration" value="underline"/>
<mx:SetEventHandler target="{submitButton}" name="click" handler="trace(’done’);"/>
</mx:State>
<mx:State name="clearState" basedOn="">
<mx:SetProperty target="{submitButton}" name="label" value="clear" />
<mx:SetEventHandler target="{submitButton}" name="click" handler="emptyDocument()" />
</mx:State>
</mx:states>

<mx:Button id="submitButton" />

在 Flex 4 中,代码如下:

<s:states>
<s:State name="submitState" />
<s:State name="clearState" />
</s:states>

<s:Button label.submitState="submit" textDecoration.submitState="underline"
click.submitState="trace(’done’)" click.clearState="emptyDocument()"
label.clearState="clear" textDecoration.clearState="none"/>
  • 组件不能再处于未定义状态或空状态。默认情况下,声明的第一个状态是组件的初始状态。
    当文档使用 MXML 2009 语言命名空间时,可以使用新语法。可以混合使用旧版语法和新版状态语法。只有 MXML 2006 命名空间中可以使用旧版语法。

此外,各个组件现在支持外观类中定义的一组状态,这使得根据组件状态应用可视变化更加简单。例如,如果查看 Spark Button 的外观,您会发现已定义以下状态:

<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>

ButtonSkin 类定义了各个状态中 Spark Button 在可视方面的变化。

以上只是简要介绍了新的 Flex 4 beta 状态语法。有关更多详细信息,请参阅增强的状态文档*

上一篇  |  下一篇

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/archives/84.html