- 浏览: 19203 次
- 性别:
- 来自: 北京
文章分类
最新评论
package com { import flash.events.Event; import flash.events.FocusEvent; import flash.text.TextLineMetrics; import mx.containers.HBox; import mx.controls.NumericStepper; import mx.controls.Text; import mx.controls.TextInput; import mx.core.UITextField; import mx.core.mx_internal; import mx.events.FlexEvent; import mx.managers.IFocusManager; use namespace mx_internal; /** * Dispatched when the time changes, which could be either the hour, minute. */ [Event(name="change",type="flash.events.Event")] /** * Dispatched when the hour changes. */ [Event(name="hoursChange",type="flash.events.Event")] /** * Dispatched when the minutes change. */ [Event(name="minutesChange",type="flash.events.Event")] /** * Dispatched when the seconds change. */ [Event(name="secondsChange",type="flash.events.Event")] public class TimeInputEx extends NumericStepper { /** * 时间转换字符串 */ public static function formatNumberWithChar(value:Number,length:int=2,pref:String="0"):String { var str:String = new String(value); var len:int = str.length; if(len > length) { return str.substr(0,length); } else { var n:int = length - len; for( var i:int = 0 ; i < n ; i++ ) { str = pref + str; } return str; } } /** * Construction */ public function TimeInputEx() { super(); this.maxChars = 2; this.minimum = 0; this.maximum = 23; this.stepSize = 1; this.addEventListener(FlexEvent.VALUE_COMMIT,valueCommandHandler); } //-------------------------------------------------------------------------- // // Variables // //-------------------------------------------------------------------------- /** * @private */ protected var inputBox:HBox; /** * @private */ protected var sText:Text; protected var sText2:Text; /** * @private */ protected var hoursInputField:TextInput; /** * @private */ protected var minutesInputField:TextInput; /** * @private */ protected var secondsInputField:TextInput; /** * @private */ protected var _hours:Number = 0; /** * @private */ protected var _minutes:Number = 0; /** * @private */ protected var _seconds:Number = 0; /** * @private */ protected var _time:Date; /** * @private */ protected var _text:String; /** * @private */ private var _enabled:Boolean=true; /** * @override creationChildren */ override protected function createChildren():void { super.createChildren(); if(!inputBox) { inputBox = new HBox(); inputBox.setStyle("paddingLeft",0); inputBox.setStyle("paddingRight",0); inputBox.setStyle("paddingTop",0); inputBox.setStyle("paddingBottom",0); inputBox.setStyle("horizontalGap",0); inputBox.setStyle("borderStyle","solid"); inputBox.setStyle("verticalAlign","middle"); addChild(inputBox); } var v:String = "00"; var lineMetrics:TextLineMetrics = this.measureText(v); var textWidth:Number = lineMetrics.width + UITextField.TEXT_WIDTH_PADDING; var textHeight:Number = lineMetrics.height + UITextField.TEXT_HEIGHT_PADDING; if (!hoursInputField) { hoursInputField = new TextInput(); hoursInputField.focusEnabled = false; hoursInputField.styleName = this; // restrict to numbers - dashes - commas - decimals hoursInputField.restrict = "0-9"; hoursInputField.maxChars = 2; hoursInputField.text = formatNumberWithChar(_hours,2,"0"); hoursInputField.width = textWidth; hoursInputField.height = textHeight; //hoursInputField.parentDrawsFocus = true; hoursInputField.setStyle("textAlign","right"); hoursInputField.setStyle("borderStyle","none"); hoursInputField.setStyle("paddingLeft",0); hoursInputField.setStyle("paddingRight",0); hoursInputField.setStyle("paddingTop",0); hoursInputField.setStyle("paddingBottom",0); hoursInputField.setStyle("horizontalGap",0); hoursInputField.addEventListener(FocusEvent.FOCUS_IN,inputField_focusInHandler); hoursInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); inputBox.addChild(hoursInputField); } inputField=hoursInputField; if(!sText){ sText=new Text(); sText.text=":"; sText.setStyle("textAlign","center"); sText.setStyle("paddingLeft",0); sText.setStyle("paddingRight",0); sText.setStyle("paddingTop",0); sText.setStyle("paddingBottom",0); sText.setStyle("horizontalGap",0); inputBox.addChild(sText); } if (!minutesInputField) { minutesInputField = new TextInput(); minutesInputField.focusEnabled = false; minutesInputField.styleName = this; // minutesInputField.width=textWidth; // restrict to numbers - dashes - commas - decimals minutesInputField.restrict = "0-9"; minutesInputField.maxChars = 2; minutesInputField.text = formatNumberWithChar(_minutes,2,"0"); minutesInputField.width = textWidth; minutesInputField.height = textHeight; //minutesInputField.parentDrawsFocus = true; minutesInputField.setStyle("textAlign","left"); minutesInputField.setStyle("borderStyle","none"); minutesInputField.setStyle("paddingLeft",0); minutesInputField.setStyle("paddingRight",0); minutesInputField.setStyle("paddingTop",0); minutesInputField.setStyle("paddingBottom",0); minutesInputField.setStyle("horizontalGap",0); minutesInputField.addEventListener(FocusEvent.FOCUS_IN,inputField_focusInHandler); minutesInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); inputBox.addChild(minutesInputField); } if(!sText2){ sText2=new Text(); sText2.text=":"; sText2.setStyle("textAlign","center"); sText2.setStyle("paddingLeft",0); sText2.setStyle("paddingRight",0); sText2.setStyle("paddingTop",0); sText2.setStyle("paddingBottom",0); sText2.setStyle("horizontalGap",0); inputBox.addChild(sText2); } if (!secondsInputField) { secondsInputField = new TextInput(); secondsInputField.focusEnabled = false; secondsInputField.styleName = this; // secondsInputField.width=textWidth; // restrict to numbers - dashes - commas - decimals secondsInputField.restrict = "0-9"; secondsInputField.maxChars = 2; secondsInputField.text = formatNumberWithChar(_seconds,2,"0"); secondsInputField.width = textWidth; secondsInputField.height = textHeight; //secondsInputField.parentDrawsFocus = true; secondsInputField.setStyle("textAlign","left"); secondsInputField.setStyle("borderStyle","none"); secondsInputField.setStyle("paddingLeft",0); secondsInputField.setStyle("paddingRight",0); secondsInputField.setStyle("paddingTop",0); secondsInputField.setStyle("paddingBottom",0); secondsInputField.setStyle("horizontalGap",0); secondsInputField.addEventListener(FocusEvent.FOCUS_IN,inputField_focusInHandler); secondsInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); inputBox.addChild(secondsInputField); } } /** * @private * Return the preferred sizes of the stepper. */ override protected function measure():void { super.measure(); var inputBoxHeight:Number = inputBox.getExplicitOrMeasuredHeight(); var buttonHeight:Number = prevButton.getExplicitOrMeasuredHeight() + nextButton.getExplicitOrMeasuredHeight(); var h:Number = Math.max(inputBoxHeight, buttonHeight); h = Math.max(DEFAULT_MEASURED_MIN_HEIGHT, h); var inputBoxWidth:Number = inputBox.getExplicitOrMeasuredWidth(); var buttonWidth:Number = Math.max(prevButton.getExplicitOrMeasuredWidth(), nextButton.getExplicitOrMeasuredWidth()); var w:Number = inputBoxWidth + buttonWidth; w = Math.max(DEFAULT_MEASURED_MIN_WIDTH, w); measuredMinWidth = DEFAULT_MEASURED_MIN_WIDTH; measuredMinHeight = DEFAULT_MEASURED_MIN_HEIGHT; measuredWidth = w; measuredHeight = h; } /** * @private * Place the buttons to the right of the text field. */ override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); var w:Number = nextButton.getExplicitOrMeasuredWidth(); var h:Number = Math.round(unscaledHeight / 2); var h2:Number = unscaledHeight - h; nextButton.x = unscaledWidth - w; nextButton.y = 0; nextButton.setActualSize(w, h2); prevButton.x = unscaledWidth - w; prevButton.y = unscaledHeight - h; prevButton.setActualSize(w, h); var inputBoxHeight:Number = inputBox.getExplicitOrMeasuredHeight(); var inputBoxWidth:Number = inputBox.getExplicitOrMeasuredWidth(); inputBox.setActualSize(unscaledWidth - w, unscaledHeight); trace(unscaledWidth - w + " " + unscaledHeight); // inputBox.setActualSize(inputBoxWidth,inputBoxHeight); } /** * @private */ private function inputField_focusInHandler(event:FocusEvent):void { if (this.listData) { this.Caption = this.listData.label; } inputField=event.currentTarget as TextInput; if(event.currentTarget as TextInput == hoursInputField){ this.value=parseInt(inputField.text); this.minimum=0; this.maximum=23; }else{ this.value=parseInt(inputField.text); this.minimum=0; this.maximum=59; } focusInHandler(event); // Send out a new FocusEvent because the TextInput eats the event // Make sure that it does not bubble. dispatchEvent(new FocusEvent(event.type, false, false, event.relatedObject, event.shiftKey, event.keyCode)); } /** * @private */ private function inputField_focusOutHandler(event:FocusEvent):void { if (this.listData) { this.listData.label = this.Caption; } focusOutHandler(event); // Send out a new FocusEvent because the TextInput eats the event // Make sure that it does not bubble dispatchEvent(new FocusEvent(event.type, false, false, event.relatedObject, event.shiftKey,event.keyCode)); } /** * @private * * do for format number to string */ private function valueCommandHandler(event:FlexEvent):void{ //var v=this.value; inputField.text=formatNumberWithChar(value,2,"0"); if(inputField==hoursInputField){ this.hours=value; } else if(inputField==minutesInputField){ this.minutes=value; } else if(inputField==secondsInputField){ this.seconds=value; } this.Caption=formatNumberWithChar(this.hours,2,"0") +":"+formatNumberWithChar(this.minutes,2,"0") +":"+formatNumberWithChar(this.seconds,2,"0"); } /** * @private * Remove the focus from the text field. */ override protected function focusInHandler(event:FocusEvent):void { super.focusInHandler(event); var fm:IFocusManager = focusManager; if (fm) fm.defaultButtonEnabled = false; } [Bindable] /** * The hours (an integer from 0 to 23) of the day. * * @default 0 */ public function get hours():Number { return _hours; } [Inspectable(defaultValue=0,category="Time",name="Hours")] public function set hours(val:Number):void { if (val >= 0 || val <= 24) { this._hours = val; if(inputField){ if(inputField==hoursInputField && val!=value) value=val; else{ hoursInputField.text=formatNumberWithChar(val,2,"0"); } } } dispatchEvent(new Event("hoursChange")); dispatchEvent(new Event("change")); } [Bindable] /** * The minutes (an integer from 0 to 59) passed in the hours. * * @default 30 */ public function get minutes():Number { return _minutes; } [Inspectable(defaultValue=30,category="Time",name="Minutes")] public function set minutes(val:Number):void { if (val >= 0 || val <= 59) { this._minutes = val; if(inputField){ if(inputField==minutesInputField && val!=value) value=val; else{ minutesInputField.text=formatNumberWithChar(val,2,"0"); } } } dispatchEvent(new Event("minutesChange")); dispatchEvent(new Event("change")); } [Bindable] /** * The seconds (an integer from 0 to 59) passed in the hours. * * @default 30 */ public function get seconds():Number { return _seconds; } [Inspectable(defaultValue=30,category="Time",name="Seconds")] public function set seconds(val:Number):void { if (val >= 0 || val <= 59) { this._seconds = val; if(inputField){ if(inputField==secondsInputField && val!=value) value=val; else{ secondsInputField.text=formatNumberWithChar(val,2,"0"); } } } dispatchEvent(new Event("secondsChange")); dispatchEvent(new Event("change")); } public function get Time():Date{ var d:Date=new Date(); d.hours=_hours; d.minutes=_minutes; d.seconds=_seconds; return d; } public function set Time(time:Date):void{ this._time=time; this.hours=time.hours; this.minutes=time.minutes; this.seconds=time.seconds; } [Bindable] public function get Caption():String{ return _text; } [Inspectable(defaultValue="00:00:00",category="Caption",name="Caption")] public function set Caption(timestr:String):void{ this._text=timestr; this.hours=Number(timestr.substring(0,2)); this.minutes=Number(timestr.substring(3,5)); this.seconds=Number(timestr.substring(6,8)); } /** * @private */ override public function set enabled(value:Boolean):void { _enabled = value; if(hoursInputField){ hoursInputField.enabled=value; minutesInputField.enabled=value; secondsInputField.enabled=value; sText.enabled=value; sText2.enabled=value; nextButton.enabled=value; prevButton.enabled=value; } } /** * @private */ override public function get enabled():Boolean { return _enabled; } } }
<?xml version="1.0" encoding="utf-8"?> <mx:Application creationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" layout="horizontal" xmlns:ns1="*" xmlns:com="com.*"> <mx:Script> <![CDATA[ private function init():void{ ac.addItem({starttime:"00:00:00", endtime:"01:00:00", program:""}); ac.addItem({starttime:"01:00:00", endtime:"02:00:00", program:""}); } ]]> </mx:Script> <mx:DateFormatter id="timeFormatter" formatString="J:NN:SS A" /> <mx:ArrayCollection id="ac"/> <mx:Panel layout="absolute" paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" title="TimeInput" width="100%" height="224"> <com:TimeInputEx id="timerinput" hours="23" minutes="45" width="250" seconds="30" Caption="03:45:30" top="10"/> <mx:DataGrid textAlign="center" id="dg" dataProvider="{ac}" sortableColumns="false" fontSize="14" editable="true" alternatingItemColors="[#ffffff, #d1d1d1]" headerColors="[#ffffff, #d1d1d1]" alpha="0.6" left="10" right="10" top="51" bottom="29"> <mx:columns> <mx:DataGridColumn headerText="start time" dataField="starttime" textAlign="center" editable="true" minWidth="125" itemEditor="com.TimeInputEx" editorDataField="Caption"/> <mx:DataGridColumn headerText="end time" dataField="endtime" textAlign="center" editable="true" minWidth="125" itemEditor="com.TimeInputEx" editorDataField="Caption"/> </mx:columns> </mx:DataGrid> </mx:Panel> <mx:Panel layout="vertical" paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" title="time now"> <mx:Text text="hours:{timerinput.hours}"/> <mx:Text text="minutes:{timerinput.minutes}"/> <mx:Text text="seconds:{timerinput.seconds}"/> <mx:Text text="caption:{timerinput.Caption}"/> <mx:Button label="setTime to 8:10:03" click="timerinput.Caption='08:10:03'" /> <mx:Button label="switchEnable" click="if(timerinput.enabled) timerinput.enabled=false; else timerinput.enabled=true;"/> </mx:Panel> </mx:Application>
什么都不说了,自己看代码吧,TimerInputEx中只是在原有基础之上增加了label和input
发表评论
-
ColorLabel
2014-06-19 09:46 389package com.components { imp ... -
Flex菜单弹跳效果
2014-03-14 15:06 1073一个很简单的单击效果(弹跳,选中时加下划线),可适用于菜单单击 ... -
Flex4动态加载组件存在的问题
2014-03-13 10:14 1140为了提高Spark组件性能,Adobe做了很多,但凡事均有利弊 ... -
Flex DragManager
2013-12-30 16:34 400当用户使用鼠标选择某个项目时,所选组件称之为启动器,移动过程中 ... -
AdvancedDatagrid分组、显示概要信息及问题
2013-12-27 17:28 401<?xml version="1.0" ... -
Flex日志使用及配置
2013-02-26 12:43 687Flex集成一个Log框架,可以完成很多用trac ... -
Flex 读写本地文件(Flash Player 10)
2013-02-26 11:43 1458FileReference 类提供了在用户计算机和 ... -
Flex FileReference URLRequest 请求缓存问题
2013-02-19 10:20 1175UrlRequest请求时会缓存会话 ... -
Flex 资源链接
2013-01-31 10:47 647RIA爱好者 http://www.riafan.com Co ... -
Flex 4 组件继承关系
2013-01-05 09:55 764. -
自定义的组件中加入多个MXML标记的子UI元素 (转)
2012-11-29 15:24 875首先我们来看一下它定 ... -
Flex 3 与 Flex 4 之间的区别 (转载)
2012-11-23 14:00 567http://www.adobe.com/cn/devn ... -
Flex 4 随记
2012-11-23 13:41 6191. Flex多状态事件 private functio ... -
Flash Builder 4.6 破解
2012-11-20 10:46 2具体步骤如下:1.到Adobe官网下载FlashBuil ... -
Flex HtmlButton 控件
2012-11-19 10:24 742package com { import flash ... -
探究Flex声明周期 (转载 IBM)
2012-11-16 17:14 614http://www.ibm.com/developerwor ... -
Flex 组件 生命周期
2012-11-16 16:12 8721、生命周期简述 (1) Constructio ... -
Flex 杂篇
2012-11-08 13:44 6781.复制内容到系统剪贴板System.setClipbo ... -
Failed to connect; session timed out.(无法连接,会议超时)
2012-11-06 16:23 1400Failed to connect; session time ...
相关推荐
定时器输入监视输入或textarea元素的值是否已更改,例如input事件。用法 var keyword = document . getElementById ( 'keyword' ) ;var kwInput = new TimerInput ( keyword ) ;kwInput . on ( function ( e ) { ...
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
JavaScript
JavaScript
北邮大三物流工程物流信息系统课程设计
0520_1.mov
使用C#开发的,一款非常简单的二维CAD绘图程序。 支持多种图元:线段、构造线、射线、多段线、圆、圆弧、文字。 缩放和平移视图。 支持图层。 图元支持夹点,并且可以通过移动夹点来修改图元。 捕捉。目前支持的捕捉类型有:端点、中点、中心点、象限点。 基本的编辑操作:删除、复制、镜像、偏移、移动。 撤销和重做。 支持点选和框选来选择图元。
作为AspectJ编译器的一部分,aspectj-weaver.jar主要有以下作用: 切面织入:aspectj-weaver.jar可以将定义好的切面织入到Java应用程序的字节码中,实现横切关注点的模块化aspectjweaver.jar是AspectJ编织器的主要库文件,它提供了AspectJ编织器的核心功能。它可以在编译时或运行时将AspectJ切面(aspects)编织到Java类中,实现面向切面
JavaScript
JavaScript
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Android的移动应用下拉通知效果源码.rar
变电站呼吸器硅胶体破损数据集,数据总共106张图片,标注为VOC格式
JavaScript
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
JavaScript
移动应用Android 腾讯微博客户端源码.rar
da_1716184227697..apk.1.1.1
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
avalon-framework-api-4.3.1.jar ======Avalon的组件模型一组联合的经典接口组成,用来定义容器和组件之间交换的物件。容器中的组件的需求使用和组件相关的元信息描述来表示。接口和缺省实现由Avalon ====== jeeplus需要用到的包