【发布时间】:2011-01-10 21:23:51
【问题描述】:
我想格式化一个数字以显示 00 而不是 0,以及 01, 02...10, 11,
【问题讨论】:
标签: apache-flex actionscript-3 formatting mxml number-formatting
我想格式化一个数字以显示 00 而不是 0,以及 01, 02...10, 11,
【问题讨论】:
标签: apache-flex actionscript-3 formatting mxml number-formatting
function formatNumber(number) : String {
if (number > 10)
return number;
else
return '0' + number;
}
【讨论】:
也许这是我的假设,但您是否试图在某种时间显示中表示秒或分钟?使用 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));
【讨论】:
您不能将数字格式化为具有前导 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);
}
}
}
【讨论】:
如果使用 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));
}
【讨论】:
如果您在 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>
【讨论】: