Actionscript 3 AS3 Flash cs6如何使数字带有逗号?

Actionscript 3 AS3 Flash cs6如何使数字带有逗号?,actionscript-3,flash-cs6,dynamic-text,Actionscript 3,Flash Cs6,Dynamic Text,我正在制作一个游戏,当你点击怪物时,你的分数得到+1。但当你的分数超过1000分时,我希望是1000分,而不是1000分。我不知道如何做到这一点,因为我还没有学会多少动作脚本。我在字体中嵌入了数字和标点符号。以下是我目前的代码: var score:Number = 0; Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; Monster.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHa

我正在制作一个游戏,当你点击怪物时,你的分数得到+1。但当你的分数超过1000分时,我希望是1000分,而不是1000分。我不知道如何做到这一点,因为我还没有学会多少动作脚本。我在字体中嵌入了数字和标点符号。以下是我目前的代码:

var score:Number = 0;

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

Monster.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

function fl_TapHandler(event:TouchEvent):void
{
    score = score + 1;
    Taps_txt.text = (score).toString();
}

非常感谢您的帮助。

要用逗号显示
分数,您可以这样做:(注释在代码内)

编辑:

要支持大于999.999的数字,可以执行以下操作:

function fl_TapHandler(event:MouseEvent):void
{
    score = score + 1;
    score_str = score.toString();   
    Taps_txt.text = add_commas(score_str);  
}

function add_commas(nb_str:String):String {

    var tmp_str:String = '';    
    nb_str = nb_str.split('').reverse().join('');

    for(var i = 0; i < nb_str.length; i++){
        if(i > 0 && i % 3 == 0) tmp_str += ',';
        tmp_str += nb_str.charAt(i);
    }

    return tmp_str.split('').reverse().join('');

    /*

        gives : 

            1234        => 1,234
            12345       => 12,345
            123456      => 123,456
            1234567     => 1,234,567
            12345678    => 12,345,678
            123456789   => 123,456,789
            1234567890  => 1,234,567,890

    */
}
函数fl\u TapHandler(事件:MouseEvent):void
{
分数=分数+1;
score_str=score.toString();
Taps_txt.text=添加逗号(score_str);
}
函数add_逗号(nb_str:String):String{
var tmp_str:String='';
nb_str=nb_str.split(“”).reverse().join(“”);
对于(变量i=0;i0&&i%3==0)tmp_str+=',';
tmp_str+=nb_str.charAt(i);
}
返回tmp_str.split(“”).reverse().join(“”);
/*
给予:
1234        => 1,234
12345       => 12,345
123456      => 123,456
1234567     => 1,234,567
12345678    => 12,345,678
123456789   => 123,456,789
1234567890  => 1,234,567,890
*/
}

希望能对您有所帮助。

这可能不是最优雅的方法,但我编写了一个函数,它将返回用逗号格式化的字符串

public function formatNum(str:String):String {
        var strArray:Array = str.split("");

        if (strArray.length >= 4) {
            var count:uint = 0;
            for (var i:uint = strArray.length; i > 0; i--) {
                if (count == 3) {
                    strArray.splice(i, 0, ",");
                    count = 0;
                }
                count++;

            }
            return strArray.join("");
        }
        else {
            return str;
        }
    }
我在一些相当大的数字上测试了它,它似乎工作得很好。这个数字没有上限,所以

trace (formatNum("10000000000000000000"));
将输出:

100000000000000000

所以在你的例子中,你可以这样使用它

Taps_txt.text = formatNum(String(score));
(这是隐式转换类型,而不是显式地使用
toString();
,但这两种方法都可以。转换只是在函数调用中看起来更整洁一些)

您可以这样做:

function affScore(n:Number, d:int):String {
    return n.toFixed(d).replace(/(\d)(?=(\d{3})+\b)/g,'$1,');
}
trace(affScore(12345678, 0)); // 12,345,678
使用该类:


这不起作用,因为100万显示为1000000而不是1000000。@user3406023当然,旧代码不支持大于999.999的数字,我编辑了我的答案来完成此操作。对不起,我是想评论其他人的答案而不是你的@阿克莫佐很有趣,但很复杂。看看格雷厄姆或我的答案。@格雷厄姆这是最好的答案。
function affScore(n:Number, d:int):String {
    return n.toFixed(d).replace(/(\d)(?=(\d{3})+\b)/g,'$1,');
}
trace(affScore(12345678, 0)); // 12,345,678
import flash.globalization.NumberFormatter;

var nf:NumberFormatter = new NumberFormatter("en_US");
var numberString:String = nf.formatNumber(1234567.89);
trace("Formatted Number:" + numberString);

// Formatted Number:1,234,567.89