Actionscript 3 as3为舞台上的动态文本编号添加逗号

Actionscript 3 as3为舞台上的动态文本编号添加逗号,actionscript-3,dynamic,actionscript,numbers,Actionscript 3,Dynamic,Actionscript,Numbers,所以我在stage(stage_clickCounter)上有一个动态文本字段,每次我点击这个按钮,变量clickCounter就会上升1 我使用这段代码在屏幕上显示数字: stage_clickCounter.text = numberOfClicks.toString(); 数字显示得很好,但一旦我点击1000次,它就会显示出来,没有逗号 1000//shows this on dynamic text field 1,000//would much rather prefer this

所以我在stage(stage_clickCounter)上有一个动态文本字段,每次我点击这个按钮,变量clickCounter就会上升1

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

stage_clickCounter.text = numberOfClicks.toString();
数字显示得很好,但一旦我点击1000次,它就会显示出来,没有逗号

1000//shows this on dynamic text field
1,000//would much rather prefer this
我该怎么做?我已经在字体中嵌入了数字和标点符号。

对于正整数:

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;
}
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;
}
编辑:

对于负整数和正整数:

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;
}
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;
}
函数addComma(num:int):字符串{
如果(num==0){
返回“0”;
}
var-str:String=“”;
变量符号:String=num>0?”:“-”;
num=Math.abs(num);
while(num>0){
var tmp:int=num%1000;

str=(num>999?,“+(tmpAdobe有一个NumberFormatter类就是为了这个目的。它甚至支持本地化


大多数现代编程语言都应该支持格式化数字字符串。只有在有充分理由不使用内置库的情况下,才应该编写自己的实现。

Super-duper-rad。谢谢,伙计。我的工作方式是这样的。stage\u clickCounter.text=addComma(numberOfClicks)。toString();请注意,您不需要.toString();因为addComa alredy返回一个字符串:),所以我想这带来了另一个问题。在我达到2000000后,数字消失了一段时间,然后又回来了,但使用不同的数字,我单击以添加500000000。在我达到2000000后,接下来的几次单击是空的。然后“205032704”弹出。再次单击将正确的500米添加到“705032704”你们知道到底发生了什么吗?另外,谢谢mika!修复了它。:@prpl,int的最大值是2147483647,尝试将int变量更改为uint(max value=4294967295)有一个内置的库类,NumberFormatter,可以为您实现这一点,并且它支持本地化…实际上,即使您指定了一个区域设置,数字格式化程序的flash实现在设备之间也不一致,因为它依赖于用户自己的操作系统实现,所以任何想要一致性的人都可能有一个很好的理由不同的用户可以看到不同的格式化结果,即使使用相同的区域设置ID。"-@Nate914375让新程序员习惯于寻找和使用标准库,而不是从头开始编写他们自己的解决方案,这一点很重要。我曾经使用过的一些最糟糕的代码库是那些程序员不知道如何寻找内置函数并为所有问题推出他们自己的错误解决方案的代码库。M大多数人不需要重新发明轮子。