- 浏览: 252494 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
topbox163:
图片显示不了
Flex 学习曲线图 -
彭利贤:
你好,想请教您一些关于flash的问题,您可以加我qq吗 59 ...
全屏flash的尺寸分析 -
jingj6:
是开源的吗?
小日本做的非常强大的一款AS3 3D引擎 -
hugh52066:
LZ牛B。
Flex 学习曲线图 -
sweed0:
a dream~~
一个让人瞠目结舌的传奇电脑高手!
Flex学习笔记_06 使用组件处理数据和交互_01常用组件(上)
Flex学习笔记_06 使用组件处理数据和交互_01常用组件(下)
1.8 DataGrid 组件 -- 制作图书选购列表
DataGrid组件的作用和HTML页面中的表格类似,将数据以行、列的格式显示出来。
每一纵列的宽度不定,用户可以在运行时调整宽度。
可在运行时调整列的顺序
点击列标题栏可对列数据进行排序
可以自定义每列的标题栏
和List组件一样,可以自定义每个单元格的itemRenderer
使用Model定义数据源,
columns 定义了所有的列,其中DataGridColumn 代表一列的信息,dataField的值不可省略,这个值必须是数据源中每条数据包含的属性名,否则无法显示。headerText 表示列标题。
rowCount 表示显示的行数,如果height没有设置,则用这个属性来技术高度。height=rowCount*rowHeight行高。
selectedItem 属性代表当前选中行的数据,可以在数据绑定中,当它的值发生变化时,使用该属性的任何物件都会自动更新。
接着我们利用itemRenderer 在DataGrid中加入复选框创建组件:
在组件中添加一个复选框。并添加change事件的方法addCart。
this.parentApplication 表示父Application,就是我们后面使用该组件的Application。
new cartEvent(data,cart_check.selected)
addCart 方法创建了一个自定义事件 cartEvent 事件,并且将必要的属性传到该事件,
然后通过 dispatchEvent 派发该事件。
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import bookEvent.cartEvent; internal function addCart():void{ this.parentApplication.dispatchEvent(new cartEvent(data,cart_check.selected)); } ]]> </mx:Script> <mx:CheckBox id="cart_check" x="0" y="0" label="购买" change="addCart()"/> </mx:Canvas>
以下为定义一个cartEvent 事件类:
所有的事件继承Event, 在构造函数中定义了两个参数:_data 和 _isAdd,创建事件的时候,将通过这两个参数将信息传入事件中。
super("AddBook") 调用父类Event 的构造函数,并把事件类型“AddBook”传递过去。只有调用了父类的构造函数,才能成为真正的事件对象。
package bookEvent { import flash.events.Event; public class cartEvent extends Event{ public var isAdd:Boolean; public var book:Object; function cartEvent(_data:Object,_isAdd:Boolean):void{ isAdd = _isAdd; book = _data; super("AddBook"); } } }
接下来是主程序。
在程序初始化函数中,addEventListener("AddBook",AddHandler) 为当前对象添加了对AddBook事件的监听。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" creationComplete="initApp()"> <mx:Script> <![CDATA[ import mx.events.DataGridEvent; import mx.events.DataGridEventReason import bookEvent.cartEvent; import view.*; internal function initApp():void{ addEventListener("AddBook",AddHandler); } internal function AddHandler(evt:cartEvent):void{ if(evt.isAdd){ tip_txt.text = "你选择购买:"+evt.book.name; }else{ tip_txt.text = "你放弃购买:"+evt.book.name; } } internal function checkInfo(evt:DataGridEvent):void{ //如果没有作修改 if (evt.reason == DataGridEventReason.CANCELLED){ return; } //确定修改的属性 if(evt.dataField == "date"){ // 清除原来的数据 evt.preventDefault(); // 得到新的数据 book_DG.editedItemRenderer.data.date = dateCell(DataGrid(evt.target).itemEditorInstance).num_year.value; // 关闭item editor book_DG.destroyItemEditor(); //更新数据源 book_DG.dataProvider.itemUpdated(evt.itemRenderer.data); } } ]]> </mx:Script> <mx:Model id="books"> <datas> <book> <name>Flash第一步</name> <author>陈冰</author> <date>2006</date> </book> <book> <name>Flex第一步</name> <author>walktree</author> <date>2007</date> </book> <book> <name>Apollo第一步</name> <author>还不知道呢</author> <date>2008</date> </book> </datas> </mx:Model> <mx:Label width="100%" color="#004080" text="选择一本书购买"/> <mx:DataGrid editable="true" id="book_DG" width="100%" height="156" itemEditEnd="checkInfo(event)" rowCount="5" dataProvider="{books.book}"> <mx:columns> <mx:DataGridColumn dataField="name" headerText="书名"/> <mx:DataGridColumn dataField="author" headerText="作者"/> <mx:DataGridColumn dataField="date" headerText="出版日期" itemEditor="view.dateCell" /> <mx:DataGridColumn headerText="购买" itemRenderer="view.cartCell" editable="false"/> </mx:columns> </mx:DataGrid> <mx:Canvas height="150" width="100%" backgroundColor="#ffffff"> <mx:Label id="tip_txt" text="还没有选择书目"/> </mx:Canvas> </mx:Application>
此外还有headerRenderer 控制标题栏的界面 和 itemEditor 控制单元格中编辑状态下的界面,使用跟itemRenderer一样。要使用itemEditor必须将DataGrid 的editable 属性设为true。还要设置函数来处理编辑完成事件,更新数据。主程序代码见上面 。
接着我们再定义一个组件:
在下面的组件中,使用了NumericStepper 数字选择控件来提供便捷操作。
在用户完成编辑单元格数据后,itemEditEnd事件将被触发,DataGridEvent 事件被派发出去,因此使用监听函数:itemEditEnd="checkInfo(event)"
if (evt.reason == DataGridEventReason.CANCELLED) 检查事件的类型
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="180"> <mx:NumericStepper id="num_year" x="0" y="0" minimum="1900" maximum="2100" value="{data.date}"/> <mx:Label text="请选择年份" x="96" y="2"/> </mx:Canvas>
发表评论
-
如何使用Cairngorm3的导航库(Spring AS)
2011-08-29 17:39 2904一、概述 二、LIB库包配置 下载需要的LIB库 ... -
Flex学习笔记_06 使用行为对象和动画效果_ 放缩\调整大小效果
2008-09-28 16:47 38296.3.2 放缩效果和调整大 ... -
Flex学习笔记_06 使用行为对象和动画效果_模糊、发光效果
2008-09-27 22:33 31766.3.1 模糊效果和发光效 ... -
Flex学习笔记_06 使用行为对象和动画效果_认识行为对象、行为和组件
2008-08-17 01:30 22326.1 认识行为对象 6.1.1 什么是行为对象 行 ... -
Flex学习笔记_09 数据绑定_运用实例
2008-07-28 23:41 32449.3.1 实现界面的多语言切换 <?xml vers ... -
Flex学习笔记_09 数据绑定_晋级篇
2008-07-28 22:27 28789.2.1 函数和类级别的绑 ... -
Flex学习笔记_09 数据绑定_概念、使用
2008-07-21 23:32 20759.1 认识数据绑定 9.1.1 数据绑定的概念 ... -
Flex学习笔记_08 Flex的事件机制_高级应用
2008-07-16 23:11 32048.3 事件机制的高级应用 8.3.1 事件的优先级别和 ... -
Flex学习笔记_08 Flex的事件机制_事件工作流程
2008-07-15 09:05 27358.2 事件机制的工作流程 8.2.1 关于事件流 ... -
Flex学习笔记_08 Flex的事件机制_事件架构
2008-07-14 08:54 24908.1 一切从事件开始 8.1.1 关于事件 事件有 ... -
Flex学习笔记_07 ActionScript 3.0 编程基础_数据类型及其运算、程序流程
2008-07-13 19:21 46647.3 数据类型和数据运算 7.3.1 关于数据类型 ... -
Flex学习笔记_07 ActionScript 3.0 编程基础
2008-07-09 23:15 28917.1 了解 ActionScript 3.0 7.1 ... -
Flex学习笔记_06 使用组件处理数据和交互_03控件的实例应用
2008-07-06 14:26 25923. 控件的实例应用 3.1 制作一个简单的涂鸦板 ... -
Flex学习笔记_06 使用组件处理数据和交互_02导航类组件
2008-07-02 00:04 30032. 导航类组件 2.1 ToggleButtonBa ... -
Flex学习笔记_06 使用组件处理数据和交互_01常用组件(下)
2008-06-30 10:37 4624Flex学习笔记_06 使用组 ... -
Flex学习笔记_06 使用组件处理数据和交互_01常用组件(上)
2008-06-26 23:11 4540Flex学习笔记_06 使用组件处理数据和交互_01常用组件( ... -
Flex学习笔记_05 使用容器控制界面布局_03动态布局、导航容器、表单布局
2008-06-25 08:40 6717本文的相关文章: Flex学习笔记_05 使用容器控制界面布局 ... -
Flex学习笔记_05 使用容器控制界面布局_02窗口布局
2008-06-24 09:07 5157本文的相关文章: Flex学习笔记_05 使用容器控制界面布局 ... -
Flex学习笔记_05 使用容器控制界面布局_01管理程序的布局
2008-06-23 23:52 5660本文的相关文章: Flex学习笔记_05 使用容器控制界面布局 ... -
Flex学习笔记_04 MXML语言简介
2008-06-17 22:52 54551. MXML语法 MXML语言是专门用于Flex程序中, ...
相关推荐
本教程是作者精心编写的Flex学习资料,适合初学者入门,通过图文并茂的方式,帮助读者快速掌握Flex的基本概念和核心技能。 1. **Flex基础**:Flex提供了MXML和ActionScript两种编程方式。MXML是一种声明式语言,...
《FLEX学习笔记》 FLEX,全称为Flex Builder,是由Adobe公司开发的一款基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有交互性、响应性和丰富用户体验的Web应用。FLEX的...
本压缩包“Flex学习笔记.rar”显然是一份针对初学者的教程资料,旨在帮助新接触Flex的开发者快速上手。 在“FlexBeginner.pdf”这份文档中,你可以期待找到以下关键知识点: 1. **Flex概述**:介绍Flex技术的基本...
### Flex新手教程_入门级学习笔记 #### ActionScript核心概念 **ActionScript(简称AS)** 是一种面向对象的编程语言,主要用于开发Flex应用程序。掌握AS的基础知识对于学习Flex至关重要。 ##### 类和对象 (Class...
这篇“Flex学习笔记”可能是作者在深入研究Flex技术过程中整理的心得体会和实践案例,结合了《Flex3权威指南》这本书的内容。 在Flex中,ActionScript是核心编程语言,它是基于ECMAScript的一个版本,专门针对富...
本篇“Flex学习笔记”将带你深入理解Flex的核心概念、架构以及如何使用它来构建高效的应用程序。 一、Flex基础 1. MXML与ActionScript:Flex主要使用MXML(Markup Language for Flex)和ActionScript两种语言进行...
本笔记将深入探讨Flex的基本概念、架构、组件、布局管理器以及事件处理机制,帮助初学者全面理解并掌握Flex开发。 1. **Flex简介**:Flex是一种开放源代码的框架,主要用于创建交互式的、基于Web的用户界面。它允许...
Flex学习笔记概述 Flex是一种由Adobe开发的企业级富互联网应用(RIA)的表示层解决方案,其主要目的是提供高度交互和动态的用户体验。Flex的核心在于它的编程语言MXML和ActionScript(AS),这两种语言结合在一起,...
### Flex学习笔记:ActionScript与Flex开发入门 #### 1. ActionScript核心概念 ##### 1.1 类和对象(Class and Object) 类是对象的模板,定义了一组具有相同特性和行为的对象的共同属性和方法。在ActionScript中...
通过`<mx:Script>`标签,我们可以插入AS3代码,实现业务逻辑和组件交互。 2. `trace()`函数用于在调试状态下输出信息,这对于检查和调试程序状态非常有用。它需要在调试版的Flash Player中运行。 3. CDATA段 (`<!...
以上内容概括了Flex学习过程中的关键知识点,涵盖了ActionScript的核心概念、Flex中的常用组件以及如何利用各种技术来增强应用的功能和美观度。这些知识点不仅适用于初学者入门,也为开发者提供了深入研究的方向。
Flex ActionScript 学习笔记是关于使用Adobe Flex技术并结合ActionScript 3.0进行开发的知识总结。ActionScript 3.0是随着Flash CS3一起推出的一种强大的编程语言,相较于之前的ActionScript版本,它有着显著的提升...
掌握这些生命周期方法对于优化性能和处理用户交互至关重要。例如,`createChildren()` 方法用于创建组件的子元素,`measure()` 方法计算组件大小,`layout()` 处理组件布局,`updateDisplayList()` 更新可视表示,而...
《Flex企业应用开发实战》的学习笔记主要探讨了Flex在企业应用开发中的基础知识,包括MXML语言、客户端状态保持、客户端MVC模式以及数据绑定技术。 2.1 MXML语言是Flex应用开发的核心部分,它是一种XML标记语言,与...
《Away3D_4.1+Flex4.7学习笔记与案例解析》 Away3D是一个强大的开源3D引擎,专为Adobe Flash平台设计,它允许开发者创建丰富的、交互式的三维应用程序。本学习笔记结合Flex4.7框架,将深入探讨如何在Flash平台上...
本文档是针对Flex和Java初学者的学习笔记,涵盖了Flex中的基础组件、文本处理、样式设计、行为对象以及动画效果。 一、Flex基础组件 1. Button:按钮组件,可以设置文字和图标,图标通过`icon="@Embed('图片路径')...
在Flex项目中,我们可以使用Flex的HTTPService或WebService组件来与Hessian服务进行交互。通过配置服务URL和方法名,我们可以轻松地调用远端Hessian服务的方法,并处理返回的结果。 "swf"文件"HessianFlexClient....