`

Flex学习笔记_06 使用组件处理数据和交互_01常用组件(下)

阅读更多

Flex学习笔记_06 使用组件处理数据和交互_01常用组件(上)

Flex学习笔记_06 使用组件处理数据和交互_01常用组件(中)


 

1.9 Tree 一个使用XML作为Tree组件数据源的小例子

树型组件,是List 变异后的产物。在显示数据时保留了层级结构,每个元素都是一个分支或者叶子,分支包含其他分支或叶子,叶子不可再分。

结构和XML一样,所以用XML 作为Tree的数据源再适合不过了。

 

tree的事件:

change 在选中列改变时触发。

itemClick 点击某一列时被触发。

itemOpenitemClose 在节点展开和关闭时触发。

 

属性:

labeField 表示显示的文本所对应的XML字段,这里的值为@label

@ 符号表示后面的名字是XML节点的属性名,是AS3 中的XML数据的专用表达方式。

@label 指得是folder 节点中的label 属性。

 

change="treeChanged(event) 节点改变事件

treeChanged 监听函数中,通过Tree selectedItem 属性得到当前被选中节点的XML 数据。

Tree(event.target) 强制将 event.target 转换成 Tree 类型。event.target 代表的就是Tree。

as 操作符 是类型转换符,用来将selectedItem 的值转换为XML 类型。如果类型匹配返回该类型的值,否则返回null

 

itemClick="clickItem(event)" 单击节点事件

其实itemClick 事件包括了change 事件,因此treeChanged 并不会被执行。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">	<mx:Script>
        <![CDATA[
        	import mx.events.TreeEvent;
        	import mx.events.ListEvent
        	
            public var selectedNode:XML;
            //
            public function treeChanged(event:Event):void {
                selectedNode=Tree(event.target).selectedItem as XML;                
                //res_txt.text = "选择的文件夹:"+selectedNode.@label
            }
            internal function clickItem(evt:ListEvent):void{
            	res_txt.text = "点击的节点:"+evt.rowIndex
            }
            internal function openItem(evt:TreeEvent):void{
            	res_txt.text = "带开的节点:"+evt.item
            }
            internal function closeItem(evt:TreeEvent):void{
            	res_txt.text = "关闭的节点:"+evt.item
            }
        ]]>
    </mx:Script>
    <mx:XMLList id="files">
        <folder label="C:">
            <folder label="My Documents">
                <folder label="Adobe"/>
            </folder>
            <folder label="Windows">
                <folder label="soft"/>
                <folder label="drive"/>
            </folder>
            <folder label="Image"/>
            <folder label="Music"/>
        </folder>    
    </mx:XMLList>
    <mx:Tree id="myTree" width="165" height="265" labelField="@label" itemRenderer="nodeItem"
                showRoot="true" dataProvider="{files}" itemClick="clickItem(event)" itemOpen="openItem(event)" itemClose="closeItem(event)" change="treeChanged(event)" x="38" y="40"/>
    <mx:TextArea id="res_txt" x="211" y="40" height="197"/> 
</mx:Application>
 

Tree 默认采用的itemRenderer是 mx.controls.treeClasses 包中的TreeItemRenderer 类。接着我们来扩展使用它。

data 方法是 itemRenderer 获得数据的核心方法,重写这个方法,并简单修改了节点文字的颜色。

package
{
 	import mx.controls.treeClasses.*;
    import mx.collections.*;
    

	public class nodeItem extends TreeItemRenderer
	{
		//       
        public function nodeItem() {
            super();
        }
        //这是接收外部数据的核心方法       
        override public function set data(value:Object):void {
            super.data = value;
            //判断是否还有子节点,采用不同的颜色和字样
            if(TreeListData(super.listData).hasChildren)
            {
                setStyle("color", 0x006699);
                setStyle("fontWeight", 'bold');
            }
            else
            {
                setStyle("color", 0x000000);
                setStyle("fontWeight", 'normal');
            }  
        }
	}
}
 

1.10 TileList 和 HorizontalList

TileList 和 容器Tile 没有联系,不过两者实现的效果基本相似,都是采用块的形式布局。TileList = Tile + List

columnCount 属性用来设定每行显示的元素个数,组件根据每行的个数自动计算出元素的位置。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Style source ="style.css"/>
	<mx:Model id="images">
      <image>
        <item label="图片1" data="images/Baby01.gif"/>
        <item label="图片2" data="images/Baby02.gif"/>
        <item label="图片3" data="images/Baby03.gif"/>
        <item label="图片4" data="images/Baby04.gif"/>
        <item label="图片5" data="images/Baby01.gif"/>
        <item label="图片6" data="images/Baby02.gif"/>
        <item label="图片7" data="images/Baby03.gif"/>
        <item label="图片8" data="images/Baby04.gif"/>
      </image>
    </mx:Model>
	<mx:TileList itemRenderer="ImageItem" x="29" y="49" height="196" columnCount="3" dataProvider="{images.item}">
	</mx:TileList>	
</mx:Application>

 

创建itemRenderer 来定义每个元素的界面。

data.data对应数据源中item.data

data.label对应数据源中item.label

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="98" height="64" horizontalAlign="center">
	<mx:Image width="32" height="32" source="{data.data}"/>
	<mx:Button x="38" y="40" label="{data.label}"/>	
</mx:VBox>
 

1.11 文本处理

文本处理组件:

Text: 可以使用HTML不过要借助htmlText 标签或 htmlText 属性。插入HTML代码时需要使用CDATA标签。

TextArea: editable属性为true时,相当于一个支持多行的TextInput。支持HTML和内置滚动条。

TextInput 和 RichTextEditor 以及 Label

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
	<mx:Style>
		Application{
			fontSize:12;	
			backgroundGradientColors: #c0c0c0, #c0c0c0;
		}
	</mx:Style>

	<mx:Text x="51" y="56" width="253" height="23" text="简单文本"/>
	
	<mx:TextArea x="51" y="96" text="文本区" editable="false" width="172" height="48"/>
	<mx:TextInput x="51" y="171" text="输入框" displayAsPassword="true"/>

	<mx:Text width="253" height="96" x="51" y="226">
		<mx:htmlText>
			<![CDATA[<font color="#0000FF">HTML文本</font> <u>支持html标签</u><img src="images/Baby01.gif"/>...	]]>
		</mx:htmlText>
	</mx:Text>
</mx:Application>
 

1.12 一个强有力的组件 -- RichTextEditor

它实现了HTML所有功能。

是一个集成了文本处理功能的Panel组件,主要包括:TextArea 文本区 和 控制文字格式的容器。

在容器中包括了其他的组件,如 字体选择的ComboBox 、选择文本颜色的 ColorPicker 、选择文本对齐方式的ToggleButtonBar 等等。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="442" height="420">
	<mx:RichTextEditor x="10" y="10" width="403" height="281" id="myRich">
	</mx:RichTextEditor>
	<mx:TextArea id="output_txt" x="10" y="309" width="330" height="101"/>
	
	<mx:Button x="348" y="308" label="查看文本" click="output_txt.text= myRich.text"/>
	<mx:Button x="348" y="388" label="HTML代码" width="70" click="output_txt.text= myRich.htmlText"/>
	
</mx:Application>
 

1.13 设备字体和嵌入字体的应用实例

设备字体:用户机器上所有字体都最大可能地模拟其外观,保持文本的样式不会出现较大变化。支持三种设备字体:_sans, _serif, _typewriter。

设备字体必须使用引号""包含。

 

嵌入字体:将字体文件编译进SWF文件中或者运行时加载到SWF文件中,供SWF文件使用。并使文本具有抗锯齿特性,边缘更平滑,同时文本可以设置透明度,还可以旋转。缺点就是增加程序的文件大小,字体小于10时就很难辨认。

<mx:Style>
		@font-face {
			src:local("Arial"); //嵌入字体local,表示本机系统中的字体
			src:url("./Arial.swf"); //指定的字体文件地址,将字体房子SWF文件中,然后加载它。
			fontFamily: myFont; //字体的别名,必须定义
			fontStyle: normal;  //可选项,默认normal 正常,italic 斜体 oblique 倾斜
			fontWeight: normal; //可选项,默认normal 正常,bold 粗体 heavy 加倍粗体
			flashType: true;  //可选项,默认true,添加文本的额外信息,使得文本抗锯齿,平滑显示

                       //限制嵌入的字符。字符编码必须采用Unicode标准。
                       unicodeRange:
				U+0041-U+005A, //大写字母A-Z
				U+0061-U+007A, //小写字母a-z
				U+0030-U+0039, //数字0-9
				U+002E-U+002E, //点.
		}

</mx:Style>
 

定义字符的方法也可以在Flex SDK 2\frameworks\flex-config.xml中添加相关信息。

在@font-face中就可以这样使用:unicodeRange:"englishRange"

<fonts>
        <languages>
          <language-range>
            <lang>englishRange</lang>
            <range>U+0020-U+007E</range>
          </language-range>
        </languages>
</fonts>  
 

flash-unicode-table.xml列出了绝大部分语言的Unicode的字符范围。可以参考并将copy到flex-config.xml中。

分享到:
评论
2 楼 273289658 2009-02-18  
我在学Flex   支持了
1 楼 enboga 2008-11-05  
Xiaoyu64814361 写道

大哥··你的东西每次总是缺胳膊少腿的,本人又想学,不看你的我心里又不舒服,看了一半想试试,一粘贴你的代码就报错。大哥既然是教程就搞点示例代码提供下载吧··


不好意思. 因为是学习笔记, 所以是在我自己的基础上去写的. 可能有些地方让人看不懂
最近比较忙都没有更新. 现在我开始重新更新. 我会贴一些别人弄的实例

相关推荐

    flex学习笔记 flex学习总结 flex学习教程

    本教程是作者精心编写的Flex学习资料,适合初学者入门,通过图文并茂的方式,帮助读者快速掌握Flex的基本概念和核心技能。 1. **Flex基础**:Flex提供了MXML和ActionScript两种编程方式。MXML是一种声明式语言,...

    FLEX学习笔记

    《FLEX学习笔记》 FLEX,全称为Flex Builder,是由Adobe公司开发的一款基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有交互性、响应性和丰富用户体验的Web应用。FLEX的...

    Flex学习笔记.rar

    本压缩包“Flex学习笔记.rar”显然是一份针对初学者的教程资料,旨在帮助新接触Flex的开发者快速上手。 在“FlexBeginner.pdf”这份文档中,你可以期待找到以下关键知识点: 1. **Flex概述**:介绍Flex技术的基本...

    Flex新手教程_入门级学习笔记

    ### Flex新手教程_入门级学习笔记 #### ActionScript核心概念 **ActionScript(简称AS)** 是一种面向对象的编程语言,主要用于开发Flex应用程序。掌握AS的基础知识对于学习Flex至关重要。 ##### 类和对象 (Class...

    Flex学习笔记

    这篇“Flex学习笔记”可能是作者在深入研究Flex技术过程中整理的心得体会和实践案例,结合了《Flex3权威指南》这本书的内容。 在Flex中,ActionScript是核心编程语言,它是基于ECMAScript的一个版本,专门针对富...

    flex学习笔记

    本篇“Flex学习笔记”将带你深入理解Flex的核心概念、架构以及如何使用它来构建高效的应用程序。 一、Flex基础 1. MXML与ActionScript:Flex主要使用MXML(Markup Language for Flex)和ActionScript两种语言进行...

    flex 学习详细笔记

    本笔记将深入探讨Flex的基本概念、架构、组件、布局管理器以及事件处理机制,帮助初学者全面理解并掌握Flex开发。 1. **Flex简介**:Flex是一种开放源代码的框架,主要用于创建交互式的、基于Web的用户界面。它允许...

    Flex学习笔记.doc

    Flex学习笔记概述 Flex是一种由Adobe开发的企业级富互联网应用(RIA)的表示层解决方案,其主要目的是提供高度交互和动态的用户体验。Flex的核心在于它的编程语言MXML和ActionScript(AS),这两种语言结合在一起,...

    Flex学习笔记,入门材料

    ### Flex学习笔记:ActionScript与Flex开发入门 #### 1. ActionScript核心概念 ##### 1.1 类和对象(Class and Object) 类是对象的模板,定义了一组具有相同特性和行为的对象的共同属性和方法。在ActionScript中...

    Flex学习笔记-由浅入深

    最后,通过预定义的可视化组件构建用户界面,使用styles和skins自定义外观,编写事件处理和脚本控制应用程序行为,连接数据并使用服务进行通信。最后,编译并运行应用程序。 AS3语言基础是Flex开发的核心,以下是...

    flex actionscript学习笔记

    Flex ActionScript 学习笔记是关于使用Adobe Flex技术并结合ActionScript 3.0进行开发的知识总结。ActionScript 3.0是随着Flash CS3一起推出的一种强大的编程语言,相较于之前的ActionScript版本,它有着显著的提升...

    精讲Flex4组件开发(附源码)

    掌握这些生命周期方法对于优化性能和处理用户交互至关重要。例如,`createChildren()` 方法用于创建组件的子元素,`measure()` 方法计算组件大小,`layout()` 处理组件布局,`updateDisplayList()` 更新可视表示,而...

    Away3D_4.1+Flex4.7学习笔记+案例

    本学习笔记和案例旨在帮助开发者掌握Away3D 4.1与Flex4.7结合下的3D开发技巧,通过深入理解基本的3D缓动动画,开发者能够创建出更具互动性和吸引力的3D应用程序。同时,通过实践案例,可以更好地掌握3D对象动画的...

    《Flex企业应用开发实战》学习笔记之Flex企业应用开发基础[收集].pdf

    《Flex企业应用开发实战》的学习笔记主要探讨了Flex在企业应用开发中的基础知识,包括MXML语言、客户端状态保持、客户端MVC模式以及数据绑定技术。 2.1 MXML语言是Flex应用开发的核心部分,它是一种XML标记语言,与...

    flex + java 初学者 笔记 学习资料

    本文档是针对Flex和Java初学者的学习笔记,涵盖了Flex中的基础组件、文本处理、样式设计、行为对象以及动画效果。 一、Flex基础组件 1. Button:按钮组件,可以设置文字和图标,图标通过`icon="@Embed('图片路径')...

    Flex + Hessian 学习笔记(二)

    在Flex项目中,我们可以使用Flex的HTTPService或WebService组件来与Hessian服务进行交互。通过配置服务URL和方法名,我们可以轻松地调用远端Hessian服务的方法,并处理返回的结果。 "swf"文件"HessianFlexClient....

Global site tag (gtag.js) - Google Analytics