Числитель: 00 не 0 - PullRequest
       18

Числитель: 00 не 0

0 голосов
/ 11 января 2011

Я хотел бы отформатировать число для отображения 00 вместо 0 и 01, 02 ... 10, 11,

Ответы [ 5 ]

3 голосов
/ 11 января 2011
function formatNumber(number) : String {
  if (number > 10)
    return number;
  else
    return '0' + number;
}
1 голос
/ 12 января 2011

Возможно, это предположительно для меня, но вы пытаетесь представить секунды или минуты на каком-то дисплее времени?Для 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));
1 голос
/ 11 января 2011

Вы не можете отформатировать число, чтобы оно начиналось с нуля.Но поскольку эта функциональность необходима для форматирования отображения чисел в компоненте NumericStepper, вы можете просто форматировать текст в выходном текстовом поле каждый раз, когда значение изменяется.

Я написал небольшой пример для вас.Создайте новый 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);
        }

    }

}
0 голосов
/ 09 января 2014

Если вы находитесь во 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>
0 голосов
/ 25 февраля 2013

Если используются spark.components, то NumericStepper имеет свойство valueFormatFunction. Если вы используете fl.controls, то я думаю, что вышеупомянутое решение, которое использует Event.CHANGE на NumericStepper, является лучшим.

Вот как бы я это сделал при использовании 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));
}
...