220 likes | 387 Views
项目五:操作购物车数据. 能力目标:. A6-8 能将数据填入 ComboBox 控件 A6-9 能在 Tree 控件中使用 XML 数据 A8-1 能从获取 HTTPService 中获取 XML 数据 A8-2 能将 HTTPService 数据填入 ArrayCollection A9-2 能处理网络异常 A11-2 能对复杂数据类型使用数据绑定. 知识目标:. K5-3 掌握 ArrayCollection 的属性、用法 K6-9 掌握 ComboBox 控件的属性、方法 K6-10 掌握 Tree 控件的属性、方法
E N D
能力目标: A6-8能将数据填入ComboBox控件 A6-9能在Tree控件中使用XML数据 A8-1能从获取HTTPService中获取XML数据 A8-2能将HTTPService数据填入ArrayCollection A9-2能处理网络异常 A11-2能对复杂数据类型使用数据绑定
知识目标: K5-3掌握ArrayCollection的属性、用法 K6-9掌握ComboBox控件的属性、方法 K6-10掌握Tree控件的属性、方法 K7-1理解XML规范,掌握HTTPService主要属性、方法 K7-2理解Flex网络传输相关知识 K8—2掌握捕获异常的语法 K10-2掌握复杂数据类型数据绑定的方法
项目子任务: 将数据填入Combobox 在Tree控件中使用XML数据 对ArrayCollection中的项目进行排序 添加项目、更新数量 使用光标定位ShoppingCartItem
使用组合框 • 使用组合框,用户可以自己输入内容,也可以从组合框中的列表中选择需要的内容。在Flex中,组合框控件(ComboBox Control)实现了上述功能。 • 组合框控件分为2部分,文本输入区域和下拉箭头。用户可以在文本输入区域输入内容,单击下拉箭头可弹出下拉列表,在列表中选择相应的内容。下面是一个组合框控件的示例。图为控件的初始状态,图为单击下拉箭头弹出列表时状态。
组合框控件标签 • 组合框控件对应的MXML标签为<mx:ComboBox>。在组合框控件中,有些功能类似于列表类控件。有些功能,如在列表条目项上显示提示等,可以参照列表控件,这里不再详述。除此之外一些常用的属性如表所示。
组合列表框控件事件 • 在列表框控件中,常用的事件有以下几种。 • change:当选择的内容发生改变时触发该事件。 • open:在弹出下拉列表框时触发该事件 • close:当关闭列表时触发该事件 • scroll:显示下拉列表框时,用户鼠标在列表项上移动时触发的事件 • 其中,open和close事件是mx.events.ListEvent类型的事件。 • 有一点需要说明,控件弹出列表后,单击需要的内容选择时,不会发生itemClick事件,这点与列表控件不同。
创建组合列表框控件 • 创建组合列表框控件,使用<mx:ComboBox>标签,设定相关的属性,并定义事件处理。下面以图11.1为例介绍控件的创建过程。 • 图11.1的例子比较简单,只需定义列表和控件的数据即可,没有对触发的事件进行处理。代码如下。 • <?xml version="1.0"?> • <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="14"> • <mx:Panel title="组合框控件" height="130"> • <mx:Label text="请选择城市"/> • <!--插入组合框控件,并进行相应设置--> • <mx:ComboBox y="33" width="124" x="18"> • <!--组合框的列表数据--> • <mx:ArrayCollection> • <mx:String>上海</mx:String> • <mx:String>北京</mx:String> • <mx:String>广州</mx:String> • <mx:String>深圳</mx:String> • <mx:String>香港</mx:String> • </mx:ArrayCollection> • </mx:ComboBox> • </mx:Panel> • </mx:Application>
树形控件 • 树形控件用来表示结构化的数据。在树形结构中包括叶子(Leaf)节点和树枝(Branch)节点。其中树枝节点还可以包含叶子节点,而叶子节点不可以再分解。在树形控件中,叶子节点用文本图标进行标识,而树枝节点使用文件夹图标,类似于Windows中的文件夹图标。图是一个树形控件,它显示了某个文件的目录。
树形控件标签 • 树形控件对应的MXML标签为<mx:Tree>,该控件的属性除继承ListBase类的属性外,常用属性如表所示。
树形控件事件 • 在树形控件中,除发生change之类ListBase中的事件外,单击打开树枝节点、关闭树枝节点等都会触发相应的事件。常用的事件如下。 • itemClose:当闭合树枝节点时,触发该事件。 • itemOpen:当树枝节点打开或者展开时,触发该事件。 • itemOpening:当初始化树枝节点展开和闭合时,触发该事件。 • 上述事件的类型均为mx.events.TreeEvent。 • 在编辑控件中节点的内容时,触发的编辑事件与列表控件一致,可以参考列表控件。
树形控件类的方法 • 在编写树形控件的事件处理中,常需要获得节点的双亲等属性以及对控件进行动态操作,例如展开某个节点,可以通过树形控件类的方法获得。常用的方法如下。 • expandChildrenOf():展开或者关闭节点下所有的子节点。方法有两个参数:第一个是操作的节点,类型为Object;第二个是操作的类型,true为展开,false为关闭。 • expandItem():展开或关闭节点。当展开或关闭节点时,控件保存子节点的状态。该方法包含4个参数:第一个是操纵的节点,类型为Object;第二个是操作状态,true为展开,false为关闭;第三个是否激活转换,默认为false,当节点的孩子超过20个时,当节点第一次打开时,不进行转换;第四个展开或者关闭节点时是否触发事件。 • getParentItem():获得当前节点的双亲节点。 • setItemIcon():设置控件中的图标。该方法包含3个参数:第一个要更改的节点,第二个是叶子节点或者闭合树枝节点的图标,第三个是树枝节点打开状的图标。
创建树形控件 • 创建树形控件,通过定义控件的数据,插入控件的标签,定义控件的属性和事件即可。下面以图10.20为例介绍简单树形控件的创建。在图10.20中,只对数据进行展示,未添加其他功能,其代码如下。 • <?xml version="1.0"?> • <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="14"> • <!-- 定义控件的数据 --> • <mx:XMLList id="listFtp"> • <folder item="目录"> • <folder item="杀毒"/> • <folder item="媒体播放"> • <folder item="暴风影音" /> • <folder item="mp3播放器" /> • <folder item="foobar"/> • <folder item="千千静听" /> • </folder> • <folder item="音乐" isBranch="true"/> • <folder item="电影" isBranch="true"/> • </folder> • </mx:XMLList> • <mx:Panel title="树形控件" height="308" width="308"> • <!-- 定义控件,使用数据中item属性内值作为显示的内容 --> • <mx:Tree id="tree1" labelField="@item" width="100%" height="100%" • dataProvider="{listFtp}"> • </mx:Tree> • </mx:Panel> • </mx:Application>
ArrayCollection • ArrayCollection标签是在Flex应用中表现一个ArrayCollection类的标签。ArrayCollection类实际上是一个Array类的包装类。ArrayCollection类是位于mx.collections包下继承于同包的ListCollectionView类。ArrayCollection类起到的作用是作为Array类的面板接受外部的操作。并负责将Array中的数据转换成为可以由Flex数据组件显示的内容。
ArrayCollection类简介 • ArrayCollection类包装了Array类对外的方法和属性,将ArrayCollection类上的操作映射到Array类上进行操作。ArrayCollection类继承于ListCollectionView类,表明ArrayCollection是一个用于显示的数据容器类。
ArrayCollection类的使用 • ArrayCollection类可以按照标签的方式使用也可以按照类的方式直接使用。
XML概述 • 在讲述如何在Flex中处理XML前,首先需要了解XML一些相关特性。本节是XML的概述章节,简要介绍XML和E4X。
XML的操纵 • 在ActionScript 3.0中,无论是创建XML还是读取XML中的内容与ActionScript 2.0相比,都容易很多。ActionScript 3.0对于XML的支持比ActionScript 2.0更加强大。本节介绍如何使用ActionScript 3.0中新特性对XML进行操纵。
遍历XML • 相比ActionScript 2.0,在ActionScript 3.0中访问XML的节点简直是革命性的飞跃。在ActionScript 3.0中可以使用运算符访问XML,包括点号“.”、属性标识“@”、后裔符号“..”、通配符“*”。这样的方法方法,有些类似与XPath,用户直接使用路径访问XML。下面是“XML简介”一节中的XML片段介绍如何访问XML中的元素。
在MXML中使用XML • XML可以作为多种控件的数据,例如列表控件、数据表格控件等。在Flex中可以利用MXML中的标签,如<mx:XML>、<mx:XMLList>、<mx:Model>定义XML数据,为控件进行数据绑定。本节介绍如何在MXML中使用XML。
错误处理 • 从ActionScript2.0开始就提供了Error类来处理错误,它允许开发者在普通的方法中抛出异常并指定错误信息。ActionScript3.0基于ActionScript2.0良好的体系结构进行了扩展,提供了准确捕获错误的机制。
捕获错误 • 在ActionSrcipt3.0中采用try…catch…finally这样的代码片段来进行错误的捕获。try代码片段中编写操作处理的代码,在catch代码片段中捕获错误,而在finally代码片段中可以进行一些其他的处理。