私は現在、設定された時間内に設定された量だけ変数を定期的に増減するフラッシュプログラムを扱っています。これを行うには、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});
}