0

私は現在、設定された時間内に設定された量だけ変数を定期的に増減するフラッシュプログラムを扱っています。これを行うには、TweenLite を使用しています。現在の私の問題は次のとおりです。

数字は常に6桁の長さにしたい。したがって、数値 10 は 000010 と表示されます。156 は 000156 と表示されます。現在の私のプログラムは、単に 10 または 156 を表示します。

特定のテキスト ボックスが常に XXXXXX 形式になるようにするにはどうすればよいですか?

私の状況がほとんどの場合とわずかに異なる理由は、数字が大きく増加しているためです。つまり、数字は X から XX、XXX に流動的に変化するため、数字の前に 0000 を付けることは、技術的にはこの問題に対する有効な応答ではありません。数字が X から XX などに変化したときに追加の 0 がミックスに投入されます。

現在、フラッシュ プログラムに次のコードがあります。

import com.greensock.*;
import com.greensock.easing.*;

var score:Number = 0;             // starting value
var targetScore:Number = 0;            // the value that the starting value will change
                                       // to (it increases before *score* increases)

function showScore():void{
    score_mc.score_txt.text = int(score);         //display score in my text box
    }

button_btn.addEventListener(MouseEvent.CLICK, increaseScore);

function increaseScore(e:MouseEvent):void{
    targetScore+=10;                                 //increase targetScore before score
    TweenLite.to(this, 1, {score:targetScore, onUpdate:showScore, ease:Linear.easeNone}); 
                           // increase score to the same value as target score, 
                           // over 1 second. The Linear.ease bit simply makes it 
                           // a constant change from one number to the next.
    }

編集:これは完全に機能するようです(テキストの元の形式も考慮します:

import com.greensock.*;
import com.greensock.easing.*;

var score:Number = 0;
var targetScore:Number = 0;  

function showScore():void{
    score_mc.score_txt.defaultTextFormat = score_mc.score_txt.getTextFormat();
    if (score < 10){
        score_mc.score_txt.text = "00000" + int(score);
    } else if (score < 100) {
            score_mc.score_txt.text = "0000" + int(score);
        } else if (score < 1000) {
            score_mc.score_txt.text = "000" + int(score);
        } else {
            score_mc.score_txt.text = "00" + int(score);
        }

}

button_btn.addEventListener(MouseEvent.CLICK, increaseScore);
function increaseScore(e:MouseEvent):void{
    targetScore+=900;
    TweenLite.to(this, 2, {score:targetScore, onUpdate:showScore, ease:Linear.easeNone});

    }
4

3 に答える 3

1

このようなものが動作するはずです:

public function printScore( score:int ):String
{
    var str:String = "00000" + score; // add the max leading zeros to your number
    return str.substr( str.length - 6 ); // return only the last 6 chars
}
于 2013-07-09T12:23:40.593 に答える
0

コードを少し変更してみることができます。

function showScore(newScore:String):void{
    score_mc.score_txt.text = newScore;         //display score in my text box
}

また、tweenlite コード:

function increaseScore(e:MouseEvent):void{
   targetScore+=10;                                 //increase targetScore before score
   var newScore = targetScore.toString("000000");
   TweenLite.to(this, 1, {score:targetScore, onUpdate:showScore, onUpdateParams:[newScore], ease:Linear.easeNone}); 
}
于 2013-07-09T11:54:46.760 に答える
0

これは仕事をしているようですが、他の人はより実用的でコンピュータに優しいかもしれない答えを残しています.

import com.greensock.*;
import com.greensock.easing.*;

var score:Number = 0;
var targetScore:Number = 0;

function showScore():void{
    if (score < 10){
        score_mc.score_txt.text = "000" + int(score);
    } else if (score < 100) {
            score_mc.score_txt.text = "00" + int(score);
        } else if (score < 1000) {
            score_mc.score_txt.text = "0" + int(score);
        }

}

button_btn.addEventListener(MouseEvent.CLICK, increaseScore);
function increaseScore(e:MouseEvent):void{
    targetScore+=50;
    TweenLite.to(this, 2, {score:targetScore, onUpdate:showScore, ease:Linear.easeNone});

    }
于 2013-07-10T12:39:15.110 に答える