![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2007
Сообщений: 9
|
Уважаемые профессионалы, нужна ваша помощь.
Нашла в сети код для реализации во флэш прямого отсчёта даты (метрики). Код работает, но к сожалению считает только дни. // Создаём текстовое поле для отображения данных
//_root.createTextField("time_txt", 1, Stage.width/2-100, Stage.height/2-10, 200, 20);
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Tahoma";
with (time_txt) {
border = true;
borderColor = 0xff0000;
/*Здесь можно изменить цвет рамки*/
background = true;
backgroundColor = 0xcccccc;
/*Здесь можно изменить цвет фона*/
autoSize = true;
textColor = 0xff0000;
}
time_txt.setNewTextFormat(my_fmt);
// Задаём дату до которой вести отчёт, пишем год, потом месяц (отсчёт месяцев начинается с 0), затем пишем число
yourDate = new Date(2001, 1, 15);
var day:Number=yourDate.getDate();
year=yourDate.getFullYear();
yourDateMsec = yourDate.getTime();
//
F_countDown = function () {
// создаём класс Date , который отслеживает текущее время
nowDate = new Date();
// Вычисляем количество милисекунд
nowDateMsec = nowDate.getTime();
//
var msec = yourDateMsec-nowDateMsec;
// Делаем проверку на наступление даты
if (msec>=0) {
// Если наступило
//time_txt.text = "Уже наступило";
//clearInterval(interval);
} else {
// Если ненаступило то продолжаем выполнение счётчика
// Вычисляем из общего количества милисекунд, количество секунд
var sec:Number = Math.floor(msec/1000);
// Вычисляем из общего количества милисекунд, количество минут
var min = Math.floor(sec/60);
// Вычисляем из общего количества милисекунд, количество часов
var hour = Math.floor(min/60);
// Вычисляем из общего количества милисекунд, количество суток
var day = Math.floor(hour/24);
// Отсекаем от полученных секунд остаток от деления, т.е. то число которое осталось
// при делении на 60 так как в минуте 60 секунд
sec %= 60;
// при делении на 60 так как в часе 60 минут
min %= 60;
// при делении на 24 так как в сутках 24 часа
hour %= 24;
var countdown:Number = (Math.abs(day))-1;
var strCount:String = countdown.toString();
//trace(strCount);
//strCount = (strCount.length>1) ? strCount.substr(1, strCount.length+1) : strCount;
strrCount = strCount.substr(-1)
//trace(strCount);
//var __int:Number = parseInt(strrCount);
if (strrCount==2 || strrCount==3 || strrCount==4) {
days = "дня";
} else if (strrCount==1) {
days = "день";
} else if (strrCount==5 || strrCount==6 || strrCount==7 || strrCount==8 || strrCount==9 || strrCount==0) {
days = "дней";
}
time_txt.text="Со дня нашей свадьбы прошло "+ strCount+ " "+days;
// Записываем результат в текстовое поле
//time_txt.text ="Days: "+Math.abs(day)+", Hour: "+Math.abs(hour)+", Min: "+Math.abs(min)+", Sec: "+Math.abs(sec);
//time_txt.text = "Days: "+Math.abs(day);
}
};
// Создаём setInterval для запуска нашей функции F_countDown,
// который будет запускать её раз в секунду потому что чаще нам не нужно
interval = setInterval(F_countDown, 1000);
// Запускаем функцию
F_countDown();
Что бы выглядело примерно так: "Со дня нашей свадьбы прошло: 5 лет, 8 месяцев, 24 дня" Поиск по форуму не дал результатов, в основном обсуждаются вопросы создания обратного отсчета времени и то только в днях, часах, минутах и секундах. Заранее огромное спасибо! С уважением, Согдиана. Последний раз редактировалось iNils; 23.12.2007 в 12:49. |
![]() |
Часовой пояс GMT +4, время: 18:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|