3

モンスターをクリックするとスコアが+1されるゲームを作っています。しかし、スコアが 1000 を超える場合は、1000 ではなく 1,000 を希望します。アクション スクリプトをあまり学習していないため、これを行う方法がわかりません。数字と句読点をフォントに埋め込んでいます。これまでの私のコードは次のとおりです。

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

助けていただければ幸いです。

4

4 に答える 4

1

NumberFormatterクラスを使用します。

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
于 2015-01-07T12:58:19.360 に答える
0

コンマ付きを表示するには、次のscoreようにします: (コメントはコード内にあります)

var score:Number = 0;
var score_str:String;
var score_str_len:int;

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

Monster.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

function fl_TapHandler(event:TouchEvent):void
{
    score = score + 1;

    score_str = score.toString();
    score_str_len = score_str.length;

    // here you can use score > 999 instead of score_str_len > 3
    Taps_txt.text = 
        score_str_len > 3 

        // example : 1780
        // score_str_len                        = 4
        // score_str.substr(0, 4 - 3)           = 1     : get thousands
        // score_str.substr(4 - 3)              = 780   : get the rest of our number : hundreds, tens and units
        // => 1 + ',' + 780                     = 1,780 : concatenate thousands + comma + (hundreds, tens and units)
        ? score_str.substr(0, score_str_len-3) + ',' + score_str.substr(score_str_len-3) 
        : score_str
    ;
    // gives :
    // score == 300   => 300
    // score == 1285  => 1,285
    // score == 87903 => 87,903

}

編集 :

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

    */
}

それがあなたを助けることを願っています。

于 2015-01-01T14:29:14.010 に答える