加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 4 SkinClass

发布时间:2020-12-15 05:13:07 所属栏目:百科 来源:网络整理
导读:在Flex 4中,SkinClass指向的文件通常用一个使用s:skin标签(或者sparkskin)的MXML文件进行定义。通过skinclass来改变外观的spark组件通常也是skinclass引用的Host component。Flex 4 中新的改变外观架构可以在很大的程度上 将组件和组件的外观设计分开 ,

在Flex 4中,SkinClass指向的文件通常用一个使用s:skin标签(或者sparkskin)的MXML文件进行定义。通过skinclass来改变外观的spark组件通常也是skinclass引用的Host component。Flex 4 中新的改变外观架构可以在很大的程度上将组件和组件的外观设计分开,这样组件外观设计的代码通过改变小部分的代码就可以得到重用了。

?

一、设计SkinClass的三要素

1、 HostComponentmetadata

SkinClass文件需要引用HostComponent对象,而HostComponent是指需要改变外观的组件。我们可以通过metadata标签来指定HostComponent。如:我们需要设置Button的外观,那么Button就是HostComponent。?

Code:

? ?<fx:Metadata>

? ? ? ? ?<![CDATA[

? ? ? ? ? [HostComponent("spark.components.Button")]

? ? ? ? ?]]>

? ?</fx:Metadata>

?

2、 States

如果HostComponent中有SkinState(一般用metadata标签来声明),例如:

s: ButtonBase中包含了

? ? ? [SkinState("up")]

那么在相应的skinclass mxml文件中必须有如下相应的state:

?<s:states>

? ? ?<s:State name="up"/>

?

3、 Skinparts

HostComponent中的属性可以被定义为必须或者是可选的部分(skin parts),可选的属性一般通过metadata标签将其默认设置为false。如果s:ButtonBase中包含一下的属性:

?

[SkinPart(required="false")]

public var labelDisplay:TextBase;

那么,skin文件应该包含一下相应的声明:

?

<s:Label id="labelDisplay"/>

??????

?

二、调用SkinClass的几种方法:

skins.CustomApplicationSkin为Skinclass指向的mxml文件路径

1、属性引用:

?

<s:Applicationname="Spark_Application_skinClass_test"

???????xmlns:fx="http://ns.adobe.com/mxml/2009"

???????xmlns:s="library://ns.adobe.com/flex/spark"

???????xmlns:mx="library://ns.adobe.com/flex/halo"

??????? skinClass="skins.CustomApplicationSkin">

</s:Application>

2、CSS引入

?

<fx:Style>

??????? @namespace s"library://ns.adobe.com/flex/spark";

??????? s|Application {

??????????? skinClass:ClassReference("skins.CustomApplicationSkin");

??????? }

??? </fx:Style>

3、AS代码指定,比较适合动态皮肤。

<fx:Script>

??????? <![CDATA[

??????????? import skins.CustomApplicationSkin;

?

??????????? protected functionbtn_click(evt:MouseEvent):void {

??????????????? setStyle("skinClass",CustomApplicationSkin);

??????????? }

??????? ]]>

??? </fx:Script>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读