数字格式化程序:00不为0

时间:2011-01-10 21:23:52

标签: flex actionscript-3 formatting mxml number-formatting

我想格式化数字以显示 00而不是0 ,以及01,02 ... 10,11,

5 个答案:

答案 0 :(得分:3)

function formatNumber(number) : String {
  if (number > 10)
    return number;
  else
    return '0' + number;
}

答案 1 :(得分:1)

您无法格式化数字以具有前导0填充。但由于您需要此功能来格式化NumericStepper组件中的数字显示,因此您可以在每次值更改时简单地格式化输出textField中的文本。

我为你写了一个小例子。创建一个新的AS3 FLA,向舞台添加NumericStepper,将其实例名称设置为“stepper”。然后将Main.as设置为主类。

Main.as:

package  {
    import fl.controls.NumericStepper;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.display.MovieClip;

    public class Main extends MovieClip{

        public var stepper:NumericStepper;

        public function onStepperChange (ev:Event) : void {
            updateStepper();
        }

        private function updateStepper() : void {
            var num:String = stepper.value > 10 ? "" + stepper.value : "0" + stepper.value;
            stepper.textField.text = num;
        }

        public function Main() {
            updateStepper();
            stepper.addEventListener (Event.CHANGE, onStepperChange);
        }

    }

}

答案 2 :(得分:1)

也许这是推测我,但你想在某种时间显示中代表秒或分钟?使用Flex,一种方法是使用Date对象和DateFormatter。这样你就可以提供格式字符串来输出你想要的时间。

var seconds:int = 4;

var date:Date = new Date();
date.seconds = seconds;

var formatter:DateFormatter = new DateFormatter();
formatter.formatString = "SS";

trace(formatter.format(date));

答案 3 :(得分:0)

如果使用spark.components,则NumericStepper具有valueFormatFunction属性。 如果您正在使用fl.controls,那么我认为上面使用NumericStepper上的Event.CHANGE的解决方案是最好的。

这是我在使用spark.components.NumericStepper

时的方法
var num_fld:NumericStepper = new NumericStepper();
num_fld.valueFormatFunction = numericFieldFormat;


private function numericFieldFormat(num:Number) : String {
    return((num < 10) ? '0' + String(num) : String(num));
}

答案 4 :(得分:0)

如果你在Flex 3中,你无法直接访问inputField,但很容易通过使用mx_internal来解决它

<mx:NumericStepper id="stpprHours" minimum="1" maximum="24" stepSize="1" creationComplete="formatStepper(stpprHours)" change="stpprHours_changeHandler(event)" value="1"/>

<mx:NumericStepper id="stpprMinutes" minimum="0" maximum="59" stepSize="1" creationComplete="formatStepper(stpprMinutes)" change="stpprMinutes_changeHandler(event)" value="0"/>

<mx:Script>
 <CDATA[[
        protected function stpprHour_changeHandler(event:NumericStepperEvent):void {
            formatStepper(stpprHours);              
        }

        protected function stpprMinutes_changeHandler(event:NumericStepperEvent):void {
            formatStepper(stpprMinute);                             
        }

        protected function formatStepper(stepper : NumericStepper) : void {
            if(stepper.value<10) stepper.mx_internal::inputField.text = "0" + stepper.value;

    }
 ]]>
</mx:Script>