as3在舞台上为动态文本编号添加逗号

时间:2013-09-26 17:26:42

标签: actionscript-3 dynamic actionscript numbers

所以我在舞台上有一个动态文本字段(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

我该怎么做?我已经在字体中嵌入了数字和标点符号。

2 个答案:

答案 0 :(得分:3)

对于正整数:

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

答案 1 :(得分:2)

Adob​​e为此提供了一个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

大多数现代编程语言都应该包含一些格式化数字字符串的支持。如果有严重的原因不使用内置库,您应该只编写自己的实现。