2024年4月8日发(作者:)
关于皮肤
“施加皮肤”是通过改变或者替换组件的可视化元素来改变组件外观的过程。这些可视化
元素包括位图、SWF文件,或者包含画矢量图的绘图方法的类文件。
皮肤能够定义组件在不同状态下的全部或部分外观。例如,Button控件有八种可能的状态,并
有八个与之相关的皮肤属性,如下面李子所示:
状态(State)
down
over
up
disabled
selectedDisable
d
selectedDown
selectedOver
selectedUp
selectedDownSkin
selectedOverSkin
selectedUpSkin
Skin
Skin
Skin
皮肤属性(Skin property)
downSkin
overSkin
upSkin
disabledSkin
selectedDisabledSkin
缺省的皮肤类(Default skin class)
Skin
Skin
Skin
Skin
Skin
up, over, 和 down状态的缺省皮肤如下所示:
A. up B. over C.
down
其他的空间也类似地有相关皮肤的状态。比如,RadioButton控件,它是Button控件的子
类,也有up, down, 以及 over皮肤。ComboBox控件也有皮肤来定义它在disabled,down和
over状态下的外观。
可以用位图,SWF文件,或ActionScript及MXML所定义的类来创建皮肤。所有Flex组件
都有一个缺省的皮肤类来表示组件的多个状态。正如你在上表所见的那样,Button控件的八个
状态使用同一个皮肤类,Skin来画出皮肤。类内的逻辑根据Button控件
当前状态来确定它的外观。
使用样式属性可以为组件指定皮肤。可以通过MXML标记属性,StyleManager类,
表来组织和应用皮肤。样式表可以在编译期或者运行期载入。更多有关运行期载入样式表的信
息见Loading style sheets at run time。
皮肤类型
通常用位图或者矢量图来定义皮肤。位图在Flex中被称为“图片类型(graphical)”皮
肤,它由构成图像的独立的象素点组成。Bitmap图片的缺点就是它通常为特定的解决方案定制。
如果要缩放或者变换图像,那么图片将可能失真。
矢量图,在Flex被称为“程序类型(
programmatic
)”皮肤,包含一系列线(line)的定
义,这些定义指定了线的开始和结束点,粗细,颜色以及其他Adobe® Flash® Player画线时所
需的信息。当矢量图作缩放,旋转或作其他方式的改变时,通过传递线的定义,Flash Player
就可以很容易地计算出矢量图的布局。因此,对矢量图可以做很多种类型的改变,而不必担心
失真。
使用“程序类型”皮肤的一个好处就是可以创建矢量图来对皮肤进行大量的编程控制,而
有些控制则是“图片类型”皮肤无法做到的。可以在Flex开发环境中或文本编辑器中直接开发
“程序类型”皮肤,而不需要图形开发工具,比如Adobe Flash。“程序类型”皮肤使用的内存
较少,因为它们不包括外部的图片文件。
下表描述了不同类型的皮肤:
皮肤类型
(Skin type)
图片类型皮肤
(Graphical
skins)
定义皮肤外观的图片。这些图片可以是PEG, GIF, 或 PNG 文件,也可
以是SWF文件中嵌入的元件(symbols)。通常,使用Adobe® PhotoShop®
或者Adobe® Illustrator®这样的绘图软件来创建“图片类”皮肤。更
多信息见Creating graphical skins.
程序类型皮肤
(Programmatic
skins)
用来定义皮肤的ActionScript或MXML类。想要改变以“程序类型”
皮肤作为外观的控件的视觉效果,就要编辑ActionScript或者MXML文
件,可以使用一个单独的类来定义多个皮肤。
更多信息见 Creating programmatic skins.
有状态皮肤 A type of programmatic skin that uses view states, where each view
描述(Description)
发布评论