正确设置倒计时,as3

时间:2010-04-20 15:28:22

标签: flash actionscript-3

如何正确设置倒计时?

我从33,000.00到零。它以某种方式工作,但减号运算符出现在文本字段中。

//Countdown from 33,000.00 to zero
var timer:Timer = new Timer(10);  
var count:int = -3300000; 
var fcount:int = 0; 
timer.addEventListener(TimerEvent.TIMER, incrementCounter);  
timer.start();   
function incrementCounter(event:TimerEvent) {  
count++;  
fcount=int(count);
mytext.text = formatCount(fcount);
}
function formatCount(i:int):String { 
var fraction:int = i % 100; 
var whole:int = i / 100;  
return ("0000000" + whole).substr(-7, 7) + "." + (fraction < 10 ? "0" + fraction : fraction); 
} 

alt text http://www.ashcraftband.com/myspace/videodnd/nm___.jpg


示例
我需要一些我可以用XML更新的东西,根据变量是一个向上计数器或向下计数器。

//Count up from 33,000.00
var countValue:int = 3300000;
count = countValue;

//Count down from 33,000.00
var countValue:int = -3300000;
count = countValue;

这就是我所需要的一切 fcount = Math.abs(count)

3 个答案:

答案 0 :(得分:1)

摆脱减号:

// Absolute value of i will be calculated in abs_i.
var abs_i:int = i;
if (abs_i < 0)
    abs_i = -abs_i;

var fraction:int = abs_i % 100; 
var whole:int = abs_i / 100;

要处理您希望计算的情况,您将不得不做一些不同的事情。最好有两个函数,包括一个名为decrementCounter的新函数。如果您愿意,可以有一个事件处理程序,它使用if (counter < 0)来确定应该调用哪个。

编辑:在重新阅读您的代码时,您似乎打算

fcount=int(count)

可能会解决您的问题,但您可以致电

fcount = Math.abs(count)

然后您的“格式化计数”将始终为正值。然后你可以忽略我上面推荐的变化。

(您无需拨打int(),因为count已经是[{1}}类型,int也是如此。)

答案 1 :(得分:0)

为什么不将Timer.repeatCount设置为3300000?

答案 2 :(得分:0)

在您的代码中只需更改:

var fraction:int = Math.abs(i % 100); 
var whole:int = Math.abs(i / 100);

("0000000" + whole).substr(-**5**, 7)