2011-01-10 75 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

這個函數沒有返回類型。 :) – 2011-01-10 22:51:37

+0

啊,的確 - 我不會在actionscript中經常編碼 – 2011-01-10 23:10:28

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

如果使用的是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)); 
} 
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> 
相關問題