现在的位置: 首页 > 综合 > 正文

Flex 4 Spark 皮肤介绍–以 TextinputSkin 为例

2013年10月06日 ⁄ 综合 ⁄ 共 1959字 ⁄ 字号 评论关闭

zhuan zi:http://www.51xflash.com/article/flex/201104/06-13662.html

 

Spark 皮肤是 Flex 4 中的一个新特性。spark.skins 包包含在 Spark 名称空间中,并且已在Adobe 的 Flex 4 LiveDocs 中说明:“自定义 Spark 皮肤为 MXML 文件,定义组成 Spark 组件皮肤的逻辑、图形元素和其他对象”。
spark组件有自己的皮肤,名称就是 组件名+Skin。例如, Textinput 的皮肤文件是 TextinputSkin。
皮肤组件的编写格式都比较相似,我们也可以按照源码自行设计自己所需的皮肤,在 spark 组件的 skinClass 属性制定即可。
下面以 TextinputSkin 为例,简单介绍皮肤的创建过程。

一、命名空间
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
alpha.disabled="0.5" blendMode="normal">

二、定义主机组件
定义主机组件时,可以从皮肤中访问该主机组件中包含的公开属性和样式。
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.spark.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.TextInput")]
]]>
 

三、定义状态
<s:states>
<s:State name="normal"/>
<s:State name="disabled"/>
</s:states>

四、定义皮肤的功能
<fx:Script>
/***********此处是关于属性设置己状态改变的脚本,详细请看源码**********/
</fx:Script>

五、皮肤的内容
皮肤相关的内容都用 Rect 来实现

1.组件的边框,使用 SolidColorStroke 画笔,画出 1 pixel 的边框
<!-- border -->
<s:Rect left="0" right="0" top="0" bottom="0" id="border">
<s:stroke>
<s:SolidColorStroke color="{getStyle('borderColor')}"
alpha="{getStyle('borderAlpha')}"
weight="1" />
</s:stroke>
</s:Rect>

2.填充皮肤的背景,同样用 Rect ,使用不同的效果:fill 。需要注意的是:
left="1" right="1" top="1" bottom="1"
说明据边框 1 像素,在边框以内
<!-- fill -->
<!--- Defines the appearance of the TextInput component's background. -->
<s:Rect id="background" left="1" right="1" top="1" bottom="1">
<s:fill>
<!--- Defines the background fill color. -->
<s:SolidColor id="bgFill" color="0xFFFFFF" />
</s:fill>
</s:Rect>

3.设置阴影,同样用 Rect 和 fill 。需要注意的是:
left="1" top="1" right="1" height="1"
说明据边框左上像素,在边框右下超出一个像素,填充颜色同上,即做出阴影
<!-- shadow -->
<s:Rect left="1" top="1" right="1" height="1" id="shadow">
<s:fill>
<s:SolidColor color="0x000000" alpha="0.12" />
</s:fill>
</s:Rect>

4.设置文本输入框,使用 RichEditableText 组件,
left="1" right="1" top="1" bottom="1"
说明输入框在边框以内
<!-- text -->
<s:RichEditableText id="textDisplay"
lineBreak="explicit"
verticalAlign="middle"
widthInChars="10"
left="1" right="1" top="1" bottom="1" />

文章来源: 我要学flash网(www.51xflash.com) 原文地址:http://www.51xflash.com/article/flex/201104/06-13662.html

 

抱歉!评论已关闭.