- 修改组件的皮肤有三种方式:图形皮肤(Graphical Skins)、程序皮肤(Programmatic Skins)、状态皮肤。
- 以下是通过程序皮肤的方式对组件进行修改的例子。通过程序皮肤的方式修改组件皮肤虽然也涉及到组件样式 Style ,但定义组件新皮肤的地方却在 as 代码中,外观的绘制均由代码完成。
- 建立程序皮肤的大致步骤:
- 1、编写新的组件皮肤 as 类
- 2、在定义样式的时候把皮肤的属性信息与新的组件皮肤类关联起来,这里要用到 ClassReference( "className" ) 语法
- 3、在 flex 中应用样式
- 演示文件
- 定义程序皮肤的外部 as类 文件 MyButton .as
- package
- {
- //导入新皮肤类的父类 ProgrammaticSkin,所有新的皮肤类都继承至它
- import mx.skins.ProgrammaticSkin;
- public class MyButtonSkin extends ProgrammaticSkin
- {
- public function MyButtonSkin()
- {
- super();
- }
- //定义一个绘制新皮肤外观的函数
- protected function drawSkin(skinColor:uint, skinW:Number, skinH:Number):void{
- this.graphics.lineStyle();
- this.graphics.beginFill(skinColor);
- this.graphics.drawRoundRect(0, 0, skinW, skinH, 4, 4);
- this.graphics.endFill();
- }
- /*
- 覆盖父类中的 updateDisplayList 方法
- 此方法负责根据 name 属性的值判断要更重绘的组件界面
- 在重绘的时候调用 drawSkin() 方法绘制新皮肤,达到自定义组件皮肤的目的
- */
- override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
- switch(name){
- case "upSkin":
- drawSkin(0xBED731, unscaledWidth, unscaledHeight);
- break;
- case "overSkin":
- drawSkin(0xBED001, unscaledWidth, unscaledHeight);
- break;
- case "downSkin":
- drawSkin(0xAAD001, unscaledWidth, unscaledHeight);
- break;
- }
- }
- }
- }
- 外部样式文件
- Application{
- verticalAlign:top;
- horizontalAlign:center;
- backgroundGradientColors:#000,#323232;
- }
- Panel{
- fontSize:13;
- color:#dddddd;
- paddingBottom:10;
- paddingTop:10;
- paddingLeft:10;
- paddingRight:10;
- }
- Label, Button{
- fontSize:14;
- color:#000;
- }
- /*将组件样式属性与 as类 关联起来,使用 ClassReference 语法把各皮肤属性值设为在外部编写的 as类 (MyButton.as) 即可*/
- .myButton{
- upSkin:ClassReference("MyButtonSkin");
- overSkin:ClassReference("MyButtonSkin");
- downSkin:ClassReference("MyButtonSkin");
- }
- 复制代码
- Flex 代码
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
- <!--导入外部样式,样式文件里对样式属性与相应的 as 类文件做了关联-->
- <mx:Style source="styles/skinProgrammaticSkin.css" />
- <mx:Panel title="皮肤 Skin 的修改" width="35%" height="45%" layout="vertical" horizontalAlign="center">
- <mx:Label width="100%" height="30" text="建立程序皮肤(Programmatic Skin)" />
- <mx:HBox horizontalAlign="center">
- <mx:Button id="myBtn" label="as皮肤" styleName="myButton" width="100" height="40" />
- </mx:HBox>
- </mx:Panel>
- </mx:Application>
Flex皮肤制作教程——修改组件的Skin
最新推荐文章于 2021-06-09 20:32:00 发布