правильно установить обратный отсчет, as3 - PullRequest
0 голосов
/ 20 апреля 2010

Как правильно установить обратный отсчет?

Я считаю от 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); 
} 

альтернативный текст 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 ]

1 голос
/ 20 апреля 2010

Чтобы избавиться от знака минус:

// 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;

Чтобы справиться со случаем, когда вы хотите сосчитать, вам придется действовать по-другому. Было бы лучше иметь две функции, включая новую функцию с именем decmentCounter. Если хотите, может быть обработчик событий, который использует if (counter < 0), чтобы определить, какой из них должен быть вызван.

РЕДАКТИРОВАТЬ: При повторном чтении кода кажется, что вы намеревались

fcount=int(count)

может решить вашу проблему, но вы можете позвонить

fcount = Math.abs(count)

и тогда ваш «форматированный счет» всегда будет положительным значением. Тогда вы можете игнорировать изменения, которые я рекомендовал изначально, выше.

(Вам не нужно звонить int(), потому что count уже имеет тип int, как и fcount.)

0 голосов
/ 22 апреля 2010

В вашем коде просто измените:

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

("0000000" + whole).substr(-**5**, 7)
0 голосов
/ 20 апреля 2010

почему бы не установить Timer.repeatCount равным 3300000?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...