`

Flex个人知识库8之ip组件

阅读更多
[size=large]此组件为同事所绘制,记录于此便于学习查阅:
IpInputView:
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" cornerRadius="2" height="25" width="170"
		 xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="creationCompleteHandler(event)"
		 xmlns:mx="library://ns.adobe.com/flex/mx" borderColor="#14f5f2">
	<s:layout>
		<s:HorizontalLayout verticalAlign="bottom" paddingLeft="2" paddingRight="2"/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			import mx.utils.StringUtil;
			
			import spark.events.TextOperationEvent;
			
			public static const MIN_WIDTH:Number = 150;
			
			public static const MIN_HEIGHT:Number = 22;
			
			public static const MAX_HEIGHT:Number = 30;
			
			public static const STRING_NULL:String = "";
			
			private const TO_RIGHT:uint = 37;

			private const TO_LEFT:uint = 39;
			
			private var ipsArr:Array;
			
			private var textArr:Array;
			
			protected function creationCompleteHandler(event:FlexEvent):void
			{
				ipsArr = new Array();
				ipsArr.push("");
				ipsArr.push("");
				ipsArr.push("");
				ipsArr.push("");
				textArr = new Array();
				textArr.push(firstIP);
				textArr.push(secondIP);
				textArr.push(thirdIP);
				textArr.push(fourthIP);
			}
			
			override public function set width(value:Number):void {
				if(value < MIN_WIDTH) {
					value = MIN_WIDTH;
				}
				super.width = value;
			}
			
			override public function set height(value:Number):void {
				if(value < MIN_HEIGHT) {
					value = MIN_HEIGHT;
				}else if(value > MAX_HEIGHT){
					value = MAX_HEIGHT;
				}
				super.height = value;
			}
			
			
			public static function isEmpty(str:String):Boolean {
					return str == null || StringUtil.trim(str).length == 0;
				}
			
			public function set value(value:String):void {
				if(isEmpty(value)) {
					if(textArr != null) {
						for(var j:int = 0;j < textArr.length;j++) {
							TextInput(textArr[j]).text = ipsArr[j] = ""; 
						}
					}
					return;
				}
				var arr:Array = value.split(".");
				for(var i:int = 0;i < arr.length;i++) {
					TextInput(textArr[i]).text = ipsArr[i] = arr[i]; 
				}
			}
			
			public function get value():String {
				var ip:String = "";
				if(ipsArr.length == 4) {
					ip = ipsArr[0] + "." + ipsArr[1] + "." + ipsArr[2] + "." + ipsArr[3];
				}
				return ip;
			}
			 
			private function formatIP(ip:String):String {
				if(isEmpty(ip)) {
					ip = "";
				}else {
					ip = ip.replace("/[^0-9]/g",STRING_NULL);
				}
				if(ip == "00" || ip == "000") {
					ip = "0"
				}	
				if(Number(ip) > 255) {
					ip = "255";
				}
				return ip;
			}

			protected function changeHandler(event:TextOperationEvent):void
			{
				// TODO Auto-generated method stub
				var currentText:TextInput = event.target as TextInput;
				var index:int = textArr.indexOf(currentText);
				currentText.text = ipsArr[index] = formatIP(currentText.text);
				if(currentText.text.length == 3) {
					setFocusToNextText(currentText);
				}
			}
			
			protected function textKeyUpHandler(event:KeyboardEvent):void
			{
				var currentText:TextInput = event.currentTarget as TextInput;
				if(TO_RIGHT == event.keyCode) {
					setFocusToPreText(currentText);
				}else if(TO_LEFT == event.keyCode) {
					setFocusToNextText(currentText);
				}
			}
			
			private function setFocusToPreText(text:TextInput):void {
				var index:int = textArr.indexOf(text);
				if(index > 0) {
					var preText:TextInput = textArr[index - 1];
					preText.setFocus();
				}
			}
			
			private function setFocusToNextText(text:TextInput):void {
				var index:int = textArr.indexOf(text);
				if(index < 3) {
					var nextText:TextInput = textArr[index + 1];
					nextText.setFocus();
				}
			}
		]]>
	</fx:Script>
	
	<s:TextInput width="23%" id="firstIP" maxChars="3" borderVisible="false" textAlign="center"
				 focusThickness="0" color="#14f5f2" fontWeight="bold" restrict="0-9"
				 change="changeHandler(event)" keyUp="textKeyUpHandler(event)"/>
	<s:Label paddingBottom="4" text="." width="5" fontWeight="bold" color="#14f5f2"/>
	<s:TextInput id="secondIP" width="23%" maxChars="3" borderVisible="false"  textAlign="center"
				 focusThickness="0" color="#14f5f2"  fontWeight="bold" restrict="0-9"
				 change="changeHandler(event)" keyUp="textKeyUpHandler(event)"/>
	<s:Label paddingBottom="4" text="." width="5" fontWeight="bold" color="#14f5f2"/>
	<s:TextInput width="23%" id="thirdIP" maxChars="3" borderVisible="false"  textAlign="center"
				 focusThickness="0" color="#14f5f2"  fontWeight="bold" restrict="0-9"
				 change="changeHandler(event)" keyUp="textKeyUpHandler(event)"/>
	<s:Label paddingBottom="4" text="." width="5" fontWeight="bold" color="#14f5f2"/>
	<s:TextInput width="23%" id="fourthIP" maxChars="3" borderVisible="false"  textAlign="center"
				 focusThickness="0" color="#14f5f2"  fontWeight="bold" restrict="0-9"
				 change="changeHandler(event)" keyUp="textKeyUpHandler(event)"/>
</s:BorderContainer>
[/size]
分享到:
评论

相关推荐

    flex与java通信

    在BlazeDS中,`flex.messaging.MessageBroker`是负责处理AMF请求的核心组件。 5. **安全性与优化**:通信安全可以通过SSL/TLS加密来保障,以保护数据传输过程中的隐私。此外,可以使用连接池和心跳机制优化连接的...

    flex_oralce小例子 - flex4.rar

    主要改进包括更强大的MXML语法、更丰富的组件库以及分离视觉表现和行为的Flex组件架构。 2. ActionScript 3:Flex4基于ActionScript 3编程语言,这是一种面向对象的语言,与ECMAScript 3.0兼容,提供了更强大的性能...

    FLEX数据传输与交互

    4. SecureSocket:当需要进行加密通信时,SecureSocket组件提供了一个安全的通道,可以实现FLEX与服务器的TCP/IP通信。 四、数据绑定与状态管理 1. 数据绑定:FLEX中的数据绑定是其强大功能之一,它允许UI组件的...

    Flex的MySQL浏览器源码

    在Flex中,我们可以利用Flex元件库,如Button、TextInput等,快速构建UI,并通过ActionScript实现与后端服务器的通信。 MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,广泛应用于各种规模的项目。Flex的...

    Flex4变频器 用户手册.pdf

    ### Flex4变频器用户手册知识点总结 #### 一、Flex4变频器概述与特点 Flex4变频器是Allen-Bradley品牌下的一款高性能变频器,旨在为各种工业应用提供精确的电机控制解决方案。它具备多种通信接口,如DriveExplorer...

    flex与JAVA三种交互方式的源代码与视频教程

    此外,Flex也可以使用WebService组件与Java的SOAP服务进行交互,这需要Java端提供WSDL描述文件。 3. Socket通信: 更底层的交互方式是通过Socket编程,建立TCP/IP连接。这种方式允许实时、低延迟的数据传输,但需要...

    [APress] Foundation ActionScript 3.0 with Flash CS3 and Flex 2008

    - **组件和库**:Flash CS3内置了一系列预定义的组件和图形资源,这些可以直接拖放到舞台上进行编辑或使用。 ### 3. Adobe Flex 2008介绍 - **框架功能**:Adobe Flex是一个免费开源的框架,用于构建跨平台的RIA...

    FlexFTP实例源码

    8. **项目结构**:Flex项目通常包含多个文件夹,如src(源代码)、assets(资源)、lib(库文件)等。通过查看项目结构,可以了解Flex项目的组织方式。 虽然这个实例可能无法直接在Flex3以上的版本运行,但源码中的...

    利用mstr二次开发制作flash报表的环境配置

    - 在Flex Builder中设置TOMCAT和Flex工具的关联,修改Task URL和Web URL为本地IP或localhost。 - 启动MSTR Intelligence Server和Tomcat服务。 - 配置MSTR的发布服务,并测试连接。 2. **简单Flex工程的建立**:...

    将red5集成到Tomcat服务器中

    以下是集成Red5到Tomcat的详细步骤,以及创建Flex小例子的相关知识点: 1. **下载Red5**: 在开始集成之前,首先需要从官方源(如http://dl.fancycode.com/red5/0.6.3/war/)下载Red5的WAR文件,特别是ROOT.war,...

    FlashBuild4快速入门-----解密版

    - **用户界面改进**:提供了更加丰富的UI组件库。 **3.2 开发实例** 本书通过具体的开发实例介绍了如何利用这些新特性来构建高效的应用程序。这些实例涵盖了从简单的示例到复杂的业务场景,非常适合不同层次的...

    h3c认证云计算工程师题库.pdf

    - **定义**:CVM(Cloud Virtual Machine)是H3C云计算管理平台中的核心组件之一。 - **功能**: - 负责对服务器硬件资源的管理和虚拟机的创建管理。 - 支持高可靠性、动态资源调度、虚拟机容灾与备份等功能(选项A...

    FMK.rar_firmonkey

    2. **组件库**:FMK压缩包中可能包含的控件说明,详细介绍了FirMonkey提供的各种UI组件,如按钮、文本框、列表视图、滑块等。这些组件都经过优化,可以在多种设备和分辨率下正常工作,并且可以进行深度定制,满足...

    前端技术学习路线图.pdf

    13. 前端框架:掌握至少一种主流前端框架或库(如React、Vue.js、Angular),理解其工作原理和组件化开发模式。 14. Web标准:熟悉W3C组织制定的Web标准,包括HTML、CSS、DOM、SVG标准。 15. 网络协议和数据库:...

    Oracle_12C(12.1.0.2_OEL7.2)_RAC_InstallGuide&Operations.pdf

    以下是从文档中提炼出的关键知识点: 1. 安装前提条件 文档首先强调了安装Oracle RAC 12c需要满足的硬件和软件前提条件,以确保安装过程和集群的稳定运行。硬件条件包括对内存、CPU、存储等资源的基本要求。软件...

    C++ 实现的一个简单数据库

    描述中提到“在程序编写的时候,虚拟的一个语法树”,这表明开发者可能使用自定义的方法来解析和理解查询,而不是使用标准的解析库或编译器构造工具,如ANTLR或Flex/Bison。这种方式虽然能实现基本功能,但可能不够...

    freenect_win_as3server

    2. **Flex SDK**: Flex是构建AS3应用程序的开发框架,可能与该项目相关,因为它提供了一系列UI组件和开发工具。 3. **Kinect SDK**: 微软提供的Kinect SDK包含了一系列API,允许开发者访问硬件传感器的数据,如颜色...

    java仿QQ(附源码)2

    这些库提供了丰富的组件,如按钮、文本框、标签等,用于创建窗口、布局和事件处理。在2.1.0版本中,界面有了显著的改进,这可能包括更美观的设计、更合理的布局和更友好的交互方式。 此外,项目可能还涉及线程管理...

    网页制作

    另外,前端框架和库如React、Vue.js和Angular简化了复杂网页应用的开发,它们提供了组件化开发模式,提高了代码复用性和开发效率。同时,版本控制系统如Git帮助团队协作,确保代码的安全和同步。 为了将网页部署到...

Global site tag (gtag.js) - Google Analytics