创建扩展组件学习笔记---创建简单MXML组件
来源:互联网 发布:网络钓鱼演示 编辑:程序博客网 时间:2024/05/29 18:04
所有的可视组件都源自UIComponent类。Flex的非可视组件是作为类实现的。最常见的非可视组件是Validator,Formatter,Effect等。
你不能通过过定义一个变量重载一个继承的属性,但你能通过定义setter和getter方法来重载一个属性。你能重置一个继承属性的值通过定义一个变量。一般你在为一个ActionScript组件,在子类的构造函数里重置它,或在一个MXML组件里的事件处理函数里做,因为MXML组件不能定义构造函数。
然而,当你使用MXML,Flex编译器消耗更多的负载来为你创建这个组件的子类,毕竟,使用MXML更容易地创建组件。
使用MXML还是ActionScript创建组件
两种方法实质上都是在定义一个新的ActionScript类。
修改已有组件的一些行为,增加一些基本特性,那在MXML里创建是简单快速的。
如果新组件是其它组件的组合,并且你要设定它们的尺寸和位置,你应该使用MXML里定义它们。
修改组件的行为,例如容器如何布局它的子对象,使用ActionScript。
想创建一个可视组件,直接是UIComponent的子类,使用ActionScript。
创建一个非可视的组件,如formatter,effect,使用ActionScript。
为你的控件增加日志支持,使用ActionScript。
MXML组件是一个MXML文件,你可以使用MXML标签在其它的MXML文件里引用它。
主应用的MXML文件里要为组件增加一个新的命名空间定义,这个命名空间定义了组件的位置。
一个混合组件是一个在内部包含了多个组件的组件。要创建一个混合组件,只需指定一个容器作为根标签,并增加FLEX组件作为它的子对象。
在创建自定义组件时,你也可在里边使用其它你已定义好的自定义组件。但要记得声明命名空间。
如果你创建一个包含子标签的自定义组件,你不能够在主应用里为它再增加子标签了。但若你的自定义组件只是定义了一个空的容器,你在其它MXML文件里使用这个组件时,你可为它添加子标签。
注:这个关于子标签的限制是针对可视组件的。你总是可以为非可视组件插入标签,如:ActionScript代码块,styles,effects,formatters,validators,和其他类型的非可视组件,不管你是怎样定义的你的定制组件的。
如:定义一个空组件
<?xml version="1.0"?>
<!-- mxml/EmptyForm.mxml -->
<mx:Form xmlns:mx="http://www.adobe.com/2006/mxml"/>
在主应用里使用它,并为它增加子对象:
<?xml version="1.0"?>
<!-- mxml/MainEmptyForm.mxml-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:MyComp="*">
<MyComp:EmptyForm>
<mx:FormItem label="Name">
<mx:TextInput/>
</mx:FormItem>
</MyComp:EmptyForm>
</mx:Application>
在主应用文件里,你可以引用定制组件实例的公有属性,但你不能引用该组件子对象的属性。如果,你要访问子对象,你要在定制组件里定义一些方法来传递。
定制组件中的作用域
在MXML的<mx:Script>标签中,this关键字总是指向当前scope。在主应用的MXML文件中,this关键字指向Application对象。在一个MXML组件中,this关键字指向根标签所定义的对象。
在组件定义文件中,你不能指定根标签的id属性,如果你要在组件定义中引用它,可用this关键字。
为定制组件应用样式
定制组件可以根本不包含样式,这样,将使用主应用的样式。也可带内置的样式,也可部分使用内置样式,部分使用主应用的样式。
在组件里指定样式例子:
1.使用标签属性
<?xml version="1.0"?>
<!-- mxml/myComponents/StateComboBoxWithStyleProps.mxml -->
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml"
openDuration="1000"
fontSize="15">
。。。
2.使用类选择符
<?xml version="1.0"?>
<!-- mxml/myComponents/StateComboBoxWithStyleClassSel.mxml -->
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" styleName="myCBStyle">
<mx:Style>
.myCBStyle {
openDuration : 1000;
fontSize : 15;
}
</mx:Style>
。。。
但在MXML组件里不能使用一个类型选择符,编译器将会报错。
在主应用仍可指定组件的其他样式,如:
<MyComp:StateComboBoxWithStyleProps color="red"/>
在一个主应用MXML文件中,对于一个引用的MXML组件,你可以使用三种方法设定它的样式。
1.标签属性
<MyComp:StateComboBoxWithStyleProps openDuration="1000"/>
2.类选择符
<mx:Style>
.myStateComboBox {
openDuration : 1000;
}
</mx:Style>
<MyComp:StateComboBoxWithStyleProps styleName="myStateComboBox"/>
3.类型选择符
<mx:Style>
StateComboBoxWithStyleProps {
openDuration : 1000;
}
</mx:Style>
一个MXML组件也是FLEX已有组件的子类,如果你用类型选择符指定的这个已有组件的样式,那么它也将影响这个MXML组件。
如果有一个父类的类型选择符,又有一个子类的类型选择符,而且冲突,那么将使用子类的类型选择符。
- 创建扩展组件学习笔记---创建简单MXML组件
- 创建扩展组件学习笔记---创建高级MXML组件
- React学习笔记---创建组件
- 决定用MXML还是用Actionscript创建组件
- 创建和扩展Flex 2组件(Creating and Extending Flex 2 Components)学习笔记
- 创建简单的ActionScript组件
- mxml中加载简单自定义组件
- COM学习笔记4_创建COM组件的实现
- joomla component学习笔记(一)--创建自己的组件
- COM学习笔记4_创建COM组件的实现
- 学习u3d笔记(二) 创建灯光组件
- React学习笔记——如何创建React组件
- 创建一个简单的ActionScript组件
- mxml组件元素提取
- 创建JSF自定义组件
- 创建JSF自定义组件
- 创建 ActionScript 组件
- 创建定制的组件
- 该死的串口~终于暂时摆脱你了~
- Preface
- 实现OO的最后一公里(经典导读)
- route voice example
- 混合(本机和托管)程序集
- 创建扩展组件学习笔记---创建简单MXML组件
- VC中类信息丢失
- 无题
- ptlib连接MySql笔记
- Oracle Cursor
- Regex在.Net中的平衡组-----Part 1 of 2
- C语言字符串函数大全
- 请教高手列表控件中的显示
- Regex在.Net中的平衡组-----Part 2 of 2