首页 > 其他分享 >FLEX4实践—自定义控件皮肤

FLEX4实践—自定义控件皮肤

时间:2023-05-26 12:05:57浏览次数:36  
标签:function 控件 自定义 isRequired TextInput public FLEX4


  设计需求:
  1)对于界面上的TextInput控件,需要设置‘必填’与‘非必填’两种状态

  2)对于‘必填’状态希望给与控件特殊的显示样式

  3)希望能简化代码,不需要每次使用TextInput控件都要对其置样式

 

  方案1:将样式控制写入css文件,通过Style属性控制TextInput的显示

  方案2:利用Flex4的新特性,自定义控件皮肤

 

本文将通过方案2实现皮肤的自定义
1)重写TextInput控件

package com.custom.components
{
	
	import spark.components.TextInput;
	
	public class CustomTextInput extends TextInput
	{
		public function CustomTextInput()   
		{    
			super();   
		}   
		
		
		private var _isRequired:Boolean = true;   
		
		public function get isRequired():Boolean   
		{   
			return _isRequired;   
		}   
		
		public function set isRequired(value:Boolean):void  
		{   
			_isRequired = value;   
		}   
		
		override protected function getCurrentSkinState():String   
		{   
			if(isRequired)   
				return "require";   
			return "normal";   
		}   
	}   
}

 

2)编写皮肤文件CustomTextInputSkin.mxml

<?xml version="1.0" encoding="utf-8"?>
<spark:TextInputSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
					 xmlns:s="library://ns.adobe.com/flex/spark" 
					 xmlns:mx="library://ns.adobe.com/flex/halo" xmlns:spark="spark.skins.spark.*" width="400" height="300" 
					 contentBackgroundColor.normal="#FCFCFC" 
					 contentBackgroundColor.require="#F9EF84">
	<spark:states>
		<s:State name="normal"/>
		<s:State name="require"/>
	</spark:states>
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
</spark:TextInputSkin>

 

3)主应用程序

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768"
			   xmlns:components="com.custom.components.*">  
	<fx:Style source="SkinProject.css"/>
	<fx:Script>
		<!--[CDATA[
			import com.custom.skin.*;
		]]-->
	</fx:Script>
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<mx:FormItem required="true" label="name: " labelWidth="80" y="30" x="80">
		<components:Node skinClass="com.custom.skin.CustomTextInputSkin" width="200" height="20"/>
	</mx:FormItem>
	<mx:FormItem  label="description: " labelWidth="80" y="70" x="80">
		<components:Node skinClass="com.custom.skin.CustomTextInputSkin" width="200" height="20" isRequired="false"/>  
	</mx:FormItem>	
</s:Application>

运行效果:

标签:function,控件,自定义,isRequired,TextInput,public,FLEX4
From: https://blog.51cto.com/u_16129500/6354820

相关文章

  • FLEX实践—控件内容与String显示区别
     在解释这个区别之前先来看一段示例:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[i......
  • FLEX4 序列号失效
    愚人节这天,FLASHBUILDER也和大家开了个玩笑,一大早起来,序列号被封了。上网搜了一下,果然天无绝人之路 但是我换了序列号仍然无法使用 再看以下这位高手的:方法1:暂时把系统时间改到2008,启动后再调回现在的时间。方法2:解压后存入Flex的安装文件夹plugins/com.adobe.flexide.amt_4.0.......
  • FLEX4实践—DropDownList与ComboBox
    FLEX4相对FLEX3的组件变化列表中列出以这么一项:mx.controls.ComboBox->spark.components.DropDownList 官方解释如下:   ComboBox控件是DropDownListBase控件的子类。与DropDownListBase控件类似,当用户从ComboBox控件的下拉列表中选择某项时,数据项将显示在......
  • Mybatis-Plus自动生成代码,自定义Controller
    MP网址:https://baomidou.com/pages/779a6e/#%E4%BD%BF%E7%94%A8直接copy官网代码修改成自己的:privatevoidgenerate(){FastAutoGenerator.create("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2b8","root","P@ss123.")......
  • 如何在Angular应用程序中插入自定义 CSS?这里有答案!
    KendoUIforAngular是专用于Angular开发的专业级Angular组件,telerik致力于提供纯粹的高性能AngularUI组件,无需任何jQuery依赖关系。KendoUIR12023正式版下载Telerik_KendoUI产品技术交流群:726377843    欢迎一起进群讨论为什么需要在Angular应用程序中插入自定义C......
  • Flutter控件之CircularProgressIndicator
    CircularProgressIndicator的作用Flutter中的CircularProgressIndicator是一个圆形进度指示器,用于表示正在进行的任务的进度。它通常用于长时间运行的任务,例如文件下载、网络请求等。CircularProgressIndicator可以在圆周上旋转,以表示正在进行的任务的进度,同时可以根据需要设置颜......
  • 失传的museui控件组件属性
    提示框顶部导航条自动补全输入徽章底部导航组件按钮时间输入框数据表格对话框分割线表单栅格布局图标布局列表加载加载控件message弹框加载进度条选择框选择控件选项卡文本输入框消息提示提示1提示框  2顶部导航条  3......
  • Java自定义注解(Annontation)
    (一)注解简介注解(Annontation),Java5引入的新特性,位于java.lang.annotation包中。提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。是一种说明、配置、描述性的信息,与具体业务无关,也不会影响正常的业务逻辑。但我们可以用反......
  • 自定义频率类
    自定义频率类classSuperThrottle(BaseThrottle):VISIT_RECORD={}def__init__(self):self.history=Nonedefallow_request(self,request,view):#自己写逻辑,判断是否超频#(1)取出访问者ip#(2)判断当前ip不在访问字典......
  • 多选自定义事件
    <template><view@click="onSelect(item,index)"v-for="(item,index)inlist"> //当选择的等于当前id才显示<imagev-if="selected.indexOf(item)>=0"></image><imagev-else></image></view><......