RIA大讲堂从列表中拖放数据使用E4X过滤XML部署Flex和AIR应用2拖拽操作是交互系统中常见的数据操作方式比如Windows中的拖拽▪拖拽一个文件到另一个目录▪拖拽一个网页到桌面建立快捷方式4Flex中支持拖放操作,其实现的基础是DragManagerDragManager5DragManager类允许用户通过点击拖拽对象来实现不同组件中的数据移动DragManager类中只包含静态的方法和属性,不需要实例化组件A组件B数据拖拽6拖放的操作主要包含三个阶段初始化拖动放下7对于以List为基类的组件(包括List,Tree,DataGrid)的初始化阶段,使用者启动拖放操作来实现使用鼠标从组件中选取和移动一个条目。选定的组件被称为拖动发起者。8当用户在Flex应用程序中移动一个条目时,他们这时处于拖放操作的拖动阶段。在Flex拖放操作过程中显示的图片被称为拖动代理。正在拖拽的包含数据的条目对像叫做拖拽的源。9拖拽放开,或用户拖拽一个条目经过一个可以放下的目标时进行放下操作在这一阶段,应用程序检测被放开的数据是否是一个合法的格式。如果拖拽代理经过了一个无效的目标时,你会看到一个红色的X。10DragInitiator–被选中的组件是发起者Dragproxy–拖动代理,拖放中显示的图片Dragsource-正在拖拽的包含数据的条目对像是拖拽的源Droptarget-拖拽的条目经过组件时,如果可以放下,这个组件就是目标dragEvent-当拖拽的源移动经过放下的目标时,一个dragEnter事件会广播出去11mx:DataGridid=dgdataProvider={employeeData}width=300height=400dragEnabled=truedropEnabled=truedragMoveEnabled=trueallowMultipleSelection=true/mx:DataGrid允许拖起允许放下允许移除拖出数据允许多选1213XML=TheExtensibleMarkupLanguage(可扩展标识语言)你可以认为这是一种易于描述的数据格式优势:▪结构清晰,易于阅读▪易于检索▪适用范围广泛15?xmlversion=1.0encoding=UTF-8?rootemployeenameZhangSan/nameage18/agephone134830120/phonecityBeijing/cityemailzhangsan@web.com/emailfaceassets/image/face.jpg/face/employeeemployeenameLiSi/nameage18/agephone134830120/phonecityBeijing/cityemailll@web.com/emailfaceassets/image/face.jpg/face/employee/root16XML中的ECMAScript,简称E4X基于ECMAScript4的标准在AS3中,E4X是操作XML的新方式AS2中的XML类已更名为XMLDocument,仍然可用E4X让操作XML更简单,避免复杂的循环17过滤本质上讲就是检索,将符合检索条件的数据返回dataAdataBdataC过滤dataC原始数据集过滤后的数据集1819XMLXML类包含了操作XML对象所需的方法和属性XMLListXMLList类是一个有序集合的XML,包含一个或多个XML的对象。XMLListConllectionXMLListCollection类包装了XMLList对象,并且非常类似于ArrayCollection类20ignoreComments–忽略XML中的注释ignoreWhiteSpace–忽略XML中的空格appendChild()–添加一个对象到结尾childIndex()–返回XML对象的索引位置21XMLList是一组XML对象的集合它可以代表:整个XML文档一个XML片段任意一个或多个XML对象一个XML对象=只有一个XML对象的XMLListXML.length()是1XMLList.length()返回XML对象的个数22XMLListCollection类包装了XMLList对象将XMLList对象传递给XMLListCollectionvarmyCollection:XMLListCollection=newXMLListColection(myXMLList);myCollection.source=myXMLList;or23mx:HTTPServiceid=employeeServiceurl=assets/data/employee.xmlresult=resultHandler(event)resultFormat=e4x/返回格式为e4x24resultFormat=“xmlresultFormat=e4xor25返回XML节点不能使用E4X26返回XML可以使用E4X27使用filterFunction来过滤项目在过滤方法中循环检测每一个项目,并返回trueorfalse使用refresh()方法触发过滤操作要重置数据到非过滤状态,设置filterFunction属性为nullmyCollection.filterFunction=filterEmployees;28privatefunctionfilterEmployees(item:XML):Boolean{varsearchResult:XMLList;searchResult=item.(name==myTI.text);if(searchResult.length()0){returntrue;}else{returnfalse;}}29使用点(.)运算符定位节点使用数组语法([])引用特定的节点使用(@)用于明确的检索使用括号(检索条件)完成断言过滤操作3031默认的发布路径在bin-release发布后的SWF文件Player安装HTML外壳用于深层链接33选择项目(Project)属性(Properties)Flex编译器(FlexCompiler)。34设置FlexSDK的版本编译参数允许Player版本检测和导航整合3536和别人共享源代码37你可以用FlexBuilder创建一个AIR应用的安装包,这样,用户就可以直接将这个程序安装到他们的桌面并且作为一个桌面应用程序使用。开发框架依然是基于FlexFramework导出安装包安装桌面运行38注意选择应用类型39给应用程序一个独立的ID,生成一个独立ID一个通常的做法是使用反写的域名com.riameeting.sampleDesktop40?xmlversion=1.0encoding=utf-8?mx:WindowedApplicationxmlns:mx==absolute/mx:WindowedApplication4142修改AIR配置xxx-app.xml文件systemChromenone/systemChrometransparenttrue/transparentapplication.backgroundAlpha=0.24344练习说明:exercise10.pdf练习说明:filterFunctionRIA行业资讯RIA活动信息活动资料(PPT,视频,源码),请加入RIAMeetingUserGroup下载