2011-01-10 11 views

Antwort

1

Vielleicht ist diese vermutliche von mir ist, aber versuchen Sie, Sekunden oder Minuten in einer Art Zeitanzeige darzustellen? Mit Flex wäre dies eine Möglichkeit, das Date-Objekt und den DateFormatter zu verwenden. Auf diese Weise können Sie Formatstrings bereitstellen, um Ihre Zeit beliebig auszugeben.

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

Diese Funktion hat keinen Rückgabetyp. :) –

+0

Ah, in der Tat - ich code nicht in ActionScript sehr oft –

1

Sie keine Nummer Format können angezeigt haben ein führendes 0 Padding. Da Sie diese Funktionalität jedoch benötigen, um die Zahlenanzeige in einer NumericStepper-Komponente zu formatieren, können Sie den Text in der Ausgabe textField bei jeder Änderung des Werts einfach formatieren.

Ich schrieb ein kleines Beispiel für Sie. Erstellen Sie eine neue AS3 FLA, fügen Sie der Bühne einen NumericStepper hinzu, und legen Sie den Instanznamen auf "stepper" fest. Dann legen Sie Main.as als Hauptklasse fest.

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

Aber das ist eine Zeichenfolge nicht eine Zahl, das wird zum Wert der NumericStepper-Komponente hinzugefügt werden – Yozef

+0

Wir wussten das nicht - Sie sollten erwähnt haben, dass Sie brauche das für die Komponente ... Ich habe meine Antwort geändert, um dein Problem zu lösen. – weltraumpirat

0

Wenn spark.components verwendet, dann hat der NumericStepper eine valueFormatFunction Eigenschaft. Wenn Sie fl.controls verwenden, dann ist die obige Lösung, die Event.CHANGE für NumericStepper verwendet, am besten.

Dies ist, wie ich es tun würde, wenn spark.components.NumericStepper mit

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

, wenn Sie in Flex 3 sind Sie nicht direkt auf die inputfield zugreifen können, aber einfach können Sie es lösen, indem mx_internal mit

<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"/> 

und

<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> 
Verwandte Themen