Я хотел бы форматировать число, чтобы отобразить 00 вместо 0 и 01, 02 ... 10, 11,Номер Formatter: 00 не 0
ответ
Возможно, это пробное меня, но вы пытаетесь представить секунды или минуты, в каком-то отображение времени? С 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));
function formatNumber(number) : String {
if (number > 10)
return number;
else
return '0' + number;
}
Вы не можете форматировать число, чтобы иметь ведущее 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);
}
}
}
Но это строка не число, это будет добавлено к значению компонента NumericStepper – Yozef
Мы этого не знали - вы должны были упомянуть, что вы нужно это для компонента ... Я изменил свой ответ, чтобы решить вашу проблему. – weltraumpirat
Если вы используете 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));
}
, если вы находитесь в 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>
Эта функция не имеет тип возвращаемого значения. :) –
Ах, действительно, я очень часто не кодирую в actionscript –