2011-01-10 3 views

ответ

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
function formatNumber(number) : String { 
    if (number > 10) 
    return number; 
    else 
    return '0' + number; 
} 
+0

Эта функция не имеет тип возвращаемого значения. :) –

+0

Ах, действительно, я очень часто не кодирую в actionscript –

1

Вы не можете форматировать число, чтобы иметь ведущее 0 дополнений. Но так как вам нужна эта функциональность для форматирования отображения номера в компоненте 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

Но это строка не число, это будет добавлено к значению компонента NumericStepper – Yozef

+0

Мы этого не знали - вы должны были упомянуть, что вы нужно это для компонента ... Я изменил свой ответ, чтобы решить вашу проблему. – weltraumpirat

0

Если вы используете 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)); 
} 
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> 

 Смежные вопросы

  • Нет связанных вопросов^_^