`
wqshren
  • 浏览: 24631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex 3.0 中的NumericStepper中显示格式的问题

    博客分类:
  • flex
 
阅读更多

package com.XXX.utils

{

import flash.events.Event;

import flash.events.FocusEvent;

import flash.text.TextLineMetrics;

import mx.containers.HBox;

import mx.controls.Button;

import mx.controls.Label;

import mx.controls.NumericStepper;

import mx.controls.TextInput;

import mx.core.UITextField;

import mx.core.mx_internal;

import mx.events.FlexEvent;

import mx.formatters.DateFormatter;

import mx.managers.IFocusManager;

use namespace mx_internal;

/**

* Dispatched when the time changes, which could be either the hour, minute, or dayPart.

*/

[Event(name="change",type="flash.events.Event")]

/**

* Dispatched when the hour changes.

*/

[Event(name="hoursChange",type="flash.events.Event")]

public class NumberFormaterStepr extends NumericStepper

{

public function NumberFormaterStepr()

{

super();

this.addEventListener(FlexEvent.VALUE_COMMIT,valueCommandHandler);

}

/** * @private */ 

protected var TextInputField:TextInput; //重新做一个input框,遮盖原来的

/** * @private */ protected var _newvalue:Number = 0; //新的属性,用于存值

/** * @private */ private var _enabled:Boolean=true; //是否启用

override protected function createChildren():void//重写创建子对象方法

super.createChildren(); 

var widestNumber:Number=61; 

var lineMetrics:TextLineMetrics = measureText(widestNumber.toString()); 

var textWidth:Number = lineMetrics.width + UITextField.TEXT_WIDTH_PADDING+4;

 

if (!TextInputField) 

TextInputField = new TextInput(); 

TextInputField.tabEnabled=true;

TextInputField.focusEnabled = true;

TextInputField.styleName = this; 

TextInputField.width=textWidth; 

TextInputField.restrict="0-9";

TextInputField.text = formatNumberWithChar(_newvalue); 

TextInputField.parentDrawsFocus = true; 

TextInputField.setStyle("textAlign","right");

TextInputField.setStyle("borderStyle","solid"); 

TextInputField.setStyle("paddingLeft",0); 

TextInputField.setStyle("paddingRight",0); 

TextInputField.setStyle("paddingTop",0); 

TextInputField.setStyle("paddingBottom",0);

TextInputField.setStyle("horizontalGap",0); 

TextInputField.setStyle("borderThickness",0.5); 

TextInputField.setStyle("borderColor","#cccccc"); 

TextInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); 

this.addChild(TextInputField);

inputField=TextInputField;

 

/** * @private * * do for format number to string */

private function valueCommandHandler(event:FlexEvent):void{ 

//var v=this.value; 

inputField.text=formatNumberWithChar(value);

if(inputField==TextInputField){ 

this.newvalue=value; 

}

/** * @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 newvalue():Number { return _newvalue; }

[Inspectable(defaultValue=0,category="General",name="Hours")] 

public function set newvalue(val:Number):void { 

_newvalue = val;

this.invalidateProperties();

     //dispatchEvent(new Event("hoursChange"));

     //  dispatchEvent(new Event("change"));

override protected function commitProperties():void

{

super.commitProperties();

TextInputField.text = formatNumberWithChar(_newvalue);

}

/** * @private */ 

override public function set enabled(value:Boolean):void { 

_enabled = value;

if(TextInputField){ 

TextInputField.enabled=value; 

nextButton.enabled=value;

prevButton.enabled=value; 

/** * @private */ 

override public function get enabled():Boolean { 

return _enabled;

//把数字转换成字符的。

public  function formatNumberWithChar(value:Number):String

{

var len:Number=2;

var str:String=new String(value);//转换成String

   var arr:Array=super.stepSize.toString().split("\\.");

  if(arr.length>1){

  len= arr[1].toString().length;

  }

  str=value.toFixed(len);

return str;

}

/** * @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); 

}

 /** * @private */

private function inputField_focusOutHandler(event:FocusEvent):void { 

inputField.text=formatNumberWithChar(Number(TextInputField.text));

if(inputField==TextInputField){ 

this.newvalue=value; 

}

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));

}

}

当你输入9的时候,你的stepsize 设置的0.01,那么就会显示9.00,当你输入9.236的时候,四舍五入为9.24.

分享到:
评论

相关推荐

    精通Flex3.0 CHM电子书

    Flex 3 Flex 2 技巧 Flex编译器支持条件编译 ...精通Flex 3.0――4.7 ActionScript 3.0网络编程 精通Flex 3.0――4.7.1 加载服务端数据 精通Flex 3.0――4.7.2 基于Socket的连接 精通Flex 3.0――4.8 使用事件处理类

    完全自学flex3.0随书源码

    这个"完全自学flex3.0随书源码"的资源包含了学习Flex 3.0过程中可能需要的所有源代码示例,对于初学者来说是极有价值的参考资料。 1. **Flex SDK与Flex Builder** Flex SDK是免费的开发工具,包含编译器、库和...

    FLASH-FLEX3.0开发教程中文版(例子源码)

    《FLASH-FLEX3.0开发教程中文版(例子源码)》是一份全面介绍Adobe Flex 3.0技术的教程,特别适合初学者和有一定基础的开发者深入学习。Flex是基于ActionScript 3.0的开放源代码框架,主要用于构建富互联网应用程序...

    flex3.0学习指南

    Flex 3.0 学习指南是一份专为想要深入理解和掌握Adobe Flex 3.0技术的初学者或开发者设计的教程。Flex是基于ActionScript 3.0和Flash Player的开源框架,用于构建富互联网应用程序(RIA)。这份指南旨在帮助你从零...

    flex 3.0 中英文资料

    Flex 3.0的中英文资料集合为学习者提供了丰富的学习资源,无论是初学者还是有经验的开发者,都能从中受益。 "2008522103704.chm"可能是一个帮助文档,常见于Windows系统中,用于存储和查看信息。这类文件通常包含...

    Flex3.0中文帮助

    这个"Flex3.0中文帮助[pdf]"文档是一个面向中国开发者的重要资源,提供了全面的Flex 3.0和ActionScript 3.0的教程、参考和指南。 ActionScript 3.0是Flash Player和Adobe AIR运行时环境中的编程语言,相比早期版本...

    精通flex3.0 精通 Flex3.0 LCDS ActionScript 事件

    《精通Flex3.0:LCDS与ActionScript事件详解》 Flex 3.0是Adobe公司推出的基于Flash Player运行时的开发框架,主要用于构建富互联网应用程序(RIA)。它提供了强大的组件库、数据集成以及丰富的用户体验设计,使得...

    Flex 3.0 快速入门教程

    Flex3.0学习版快速入门提高版,简单轻松,操作容易。学习简单,很清楚地描述了怎么从零凯斯学习Flex的开发。

    精通Flex 3.0--基于ActionScript 3.0实现源码

    10. **源码分析**:压缩包中的"源码"文件可能包含了一些示例项目或代码片段,通过研究这些源码,可以深入了解Flex 3.0的编程实践,包括如何组织项目结构、调用API、实现特定功能等。 总的来说,通过深入学习和实践...

    flex3.0教程 flex

    在Flex 3.0教程中,这个文件可能与教学中的某些实践操作或示例应用有关,用于演示如何在Flex应用中集成和使用这些Windows控件。 "安装软件"可能是指用于安装Flex SDK或Flex Builder的程序,这两个是开发Flex应用...

    ArcGIS Viewer For Flex 3.0 源码

    ArcGIS Viewer for Flex 3.0支持多种数据格式和服务的接入,如WMS、WFS等,还支持ArcGIS Server发布的动态和静态地图服务。通过源码,开发者可以了解如何实现数据服务的连接、订阅和数据的动态更新。 7. **自定义...

    flex3.0资源1

    本资源包中的六个可执行文件(01.exe至06.exe)可能是Flex 3.0开发环境或相关工具的安装程序,用于在用户的计算机上部署Flex开发环境。 Flex 3.0 知识点详解: 1. **ActionScript 3.0**:Flex 3.0 引入了...

    flex 3.0 actionscript 2.0

    1. **Flex SDK**:Flex 3.0 包含了Flex编译器和Flex框架库,开发者可以使用SDK中的MXML和ActionScript来构建用户界面。它支持CSS样式表,使得UI设计更加灵活和可定制化。 2. **MXML**:MXML是一种标记语言,类似于...

    Flex3.0

    本文将深入探讨Flex 3.0的新特性及其在实际开发中的应用。 1. **Spark组件架构**:Flex 3.0引入了全新的Spark组件架构,这是对原有的MX组件的重大改进。Spark组件更加轻量级,性能更优,同时提供了更好的自定义和...

    FLASH-FLEX3.0开发中文版+完整版

    《FLASH-FLEX3.0开发中文版+完整版》是一个专为开发者提供的全面教程,它涵盖了Adobe Flex 3.0的各个重要方面,包括基础知识、组件使用、数据交互以及高级特性。Flex是Adobe公司推出的一款用于创建富互联网应用程序...

    Flex3.0 使用CSS美化界面

    在Flex3.0中,通过使用CSS(层叠样式表)可以对用户界面进行详细的定制和美化,使得应用程序的外观与品牌风格保持一致,同时提高用户体验。 一、Flex3.0中的CSS基础 在Flex3.0中,CSS被用来定义组件的外观和布局,...

    flex3.0资源2

    在Flex 3.0中,开发者可以利用MXML(Markup for XML)和ActionScript来构建用户界面,MXML是一种声明式语言,用于描述界面布局和组件,而ActionScript则提供了面向对象的编程能力。通过这两种语言的结合,开发者能够...

    完全手册Flex3.0RIA开发详解

    由于上传限制在15M,所以只有打包成四个……资源来自网络,仅供学习参考。 //[完全手册Flex3.0RIA开发.part2/4.rar

    精通flex3.0 代码下载

    在深入理解Flex 3.0的过程中,代码实践至关重要,因为它能够帮助开发者直观地掌握各种组件、服务调用以及事件处理机制。 首先,我们来了解Flex 3.0的核心概念。ActionScript 3.0是Flex的基础,它是基于ECMAScript的...

Global site tag (gtag.js) - Google Analytics