4

因此,我在舞台上有一个动态文本字段(stage_clickCounter),每次单击所述按钮时,变量 clickCounter 都会增加 1。

我正在使用这段代码在屏幕上显示数字:

stage_clickCounter.text = numberOfClicks.toString();

数字显示得很好,但是一旦我点击 1,000 次,它就会显示没有逗号

1000//shows this on dynamic text field
1,000//would much rather prefer this

我怎样才能做到这一点?我已经在字体中嵌入了数字和标点符号。

4

2 回答 2

4

对于正整数:

function addComma(num:uint):String{
    if(num == 0) {
        return "0";
    }
    var str:String="";
    while(num>0){
        var tmp:uint=num%1000;
        str=(num>999?","+(tmp<100?(tmp<10?"00":"0"):""):"")+tmp+str;
        num=num/1000;
    }
    return str;
}

用法:

trace(addComma(1000999333)); //output:1,000,999,333

编辑:

对于负整数和正整数:

function addComma(num:int):String{
    if(num == 0) {
        return "0";
    }
    var str:String="";
    var sign:String=num>0?"":"-";
    num=Math.abs(num);
    while(num>0){
        var tmp:int=num%1000;
        str=(num>999?","+(tmp<100?(tmp<10?"00":"0"):""):"")+tmp+str;
        num=num/1000;
    }
    return sign+str;
}
于 2013-09-26T18:00:59.937 回答
2

Adobe 有一个 NumberFormatter 类就是为了这个目的。它甚至支持本地化。来自http://help.adobe.com/en_US/as3/dev/WS9b644acd4ebe59998b99a90125fc4fecfb-7ffb.html

var nf:NumberFormatter = new NumberFormatter(LocaleID.DEFAULT); 
trace(nf.formatNumber(-123456.789));
//Output: -123,456.789

大多数现代编程语言应该包括某种类型的对格式化数字字符串的支持。如果有严重的理由不使用内置库,您应该只编写自己的实现。

于 2015-05-22T01:49:40.063 回答