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

ああ、実際には私は非常に頻繁にコードを書くことはしません –

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

    } 

} 
+0

これは数値ではない文字列です。これはNumericStepperコンポーネントの値に加えられます – Yozef

+0

私たちはそれを知らなかった - あなたの問題を解決するために私の答えを変えました。 – weltraumpirat

0

spark.componentsを使用している場合、NumericStepperにはvalueFormatFunctionプロパティがあります。 fl.controlsを使用している場合は、NumericStepperでEvent.CHANGEを使用する上記のソリューションが最適です。

これは、あなたは、Flex 3である場合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

を使用しているとき、私はそれを行うだろうかあなたが入力フィールドに直接アクセスすることはできませんが、簡単にあなたが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> 
関連する問題