Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.04.2014, 18:08
dimka_boy вне форума Посмотреть профиль Отправить личное сообщение для dimka_boy Найти все сообщения от dimka_boy
  № 1  
Ответить с цитированием
dimka_boy

Регистрация: Sep 2013
Сообщений: 10
По умолчанию Появление Объекта по дате

Подскажите, как сделать чтобы Объект добавился на сцену при наступлении определенный даты?


Код AS3:
var BeregPrav: Mc = new Mc();
 	addChild(BeregPrav);
    BeregPrav.x = 600;
    BeregPrav.y = 400;
	BeregPrav.visible = false;
 
function myFuncBRG(){
	BeregPrav.visible = true;
}
 
setInterval(myFuncBRG,10000);
Как можно заменить setInterval на Дату?
Заранее спасибо!

Старый 02.04.2014, 19:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
var d:Date = new Date();
if(d.month == 1 && d.fullYear == 2014 && day == 1) myFuncBRG()
__________________
Марк Tween

Старый 02.04.2014, 19:19
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 3  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Нужно сравнить текущую дату и дату конечную.
Текущую дату на компьютере пользователя можно получить так:
Код AS3:
var currentDate:Date = new Date();
Конечную дату можно получить так:
Код AS3:
var time:Number = 1212121212; // Какая-то дата, в ввиде числа миллисекунд, прошедших с 1970г.
var finishDate:Date = new Date(time); // Если передается один аргумент с типом данных Number, объекту Date присваивается временное значение, исходя из количества миллисекунд, прошедших с 0:00:000 1 января 1970 года (среднее время по Гринвичу) и указанных в этом единственном аргументе.
Затем сравните две даты, и если текущая дата больше финишной - добавляете клип как обычно:
Код AS3:
if(currentDate.time >= finishDate.time){
    // Добавить клип
}
И конечно нужно почитать документацию по классу дат.
__________________
Дети не должны знать о своих родителях

Старый 03.04.2014, 12:13
dimka_boy вне форума Посмотреть профиль Отправить личное сообщение для dimka_boy Найти все сообщения от dimka_boy
  № 4  
Ответить с цитированием
dimka_boy

Регистрация: Sep 2013
Сообщений: 10
Спасибо большое! Все сделал, работает, правда с миллисекундами много мороки переделал на дату,
но клип добавляется только если запускаю ролик с финиш временем finishDate.time изначально меньшим, чем currentDate.time, если же необходимое время наступает во время проигрывания ролика, то клип не добавляется. Не знаете в чем может быть причина?
И еще загадка, но месяц в new Date(currentDate.fullYear,3,3,11); почему то нужно ставить на один меньше, хотя на компьютере дата верная. Ну это мелочь.

Код AS3:
var currentDate:Date = new Date();
var mytime:Date = new Date(currentDate.fullYear,3,3,11);
var finishDate:Date = new Date(mytime);
	if(currentDate.time >= finishDate.time){
    // Добавить клип
}

Старый 03.04.2014, 08:32
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 5  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
при работе с датами, всегда работайте с миллисекундами, а потом их преобразуйте в даты, так как при передачи экземпляра Date между классами, передается ссылка, а не копия. Потом не найдете концов.

Старый 03.04.2014, 13:22
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 6  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
месяца в Date начинаются с 0, 0 = январь, 1 = февраль,

finishDate должна устанавливаться 1 раз при запуске флешки, а потом периодически должна вызываться функция для проверки текущей даты, и финишной,
в вашем коде никакой функции нет, следовательно,
Код AS3:
if(currentDate.time >= finishDate.time)
это условие выполнится 1 раз при запуске, и так как вы установили finishDate меньше текущего , то это условие будет true.

Старый 03.04.2014, 15:55
dimka_boy вне форума Посмотреть профиль Отправить личное сообщение для dimka_boy Найти все сообщения от dimka_boy
  № 7  
Ответить с цитированием
dimka_boy

Регистрация: Sep 2013
Сообщений: 10
Еще раз огромное спасибо!
Немного переписал, все работает!)

Код AS3:
 
        var yourDate=new Date(2014,3,3,14,48);
        var yourDateMsec=yourDate.getTime();
	function F_count() {
        var nowDate = new Date();
        var nowDateMsec=nowDate.getTime();
        var msec=yourDateMsec-nowDateMsec;
        if (msec<=0) {
 
        // Добавить клип
 
    } else {
       // Не добавить клип
    }
}
 
     var interval=setInterval(F_count,1000);
     F_count();

Старый 11.04.2014, 17:23
dimka_boy вне форума Посмотреть профиль Отправить личное сообщение для dimka_boy Найти все сообщения от dimka_boy
  № 8  
Ответить с цитированием
dimka_boy

Регистрация: Sep 2013
Сообщений: 10
У меня небольшой вопрос по данному коду.
Получается что Объект при наступлении Даты добавляется каждую секунду.
Особенно заметно когда он имеет движение.

Можно ли сделать так, чтобы он при наступлении Даты Объект добавился только один раз и больше не добавлялся?

Старый 11.04.2014, 17:35
Rivexe вне форума Посмотреть профиль Отправить личное сообщение для Rivexe Найти все сообщения от Rivexe
  № 9  
Ответить с цитированием
Rivexe
 
Аватар для Rivexe

Регистрация: Jun 2013
Сообщений: 133
Можно. Нужно вызвать:
Код AS3:
clearInterval(interval);
Код AS3:
var yourDate = new Date(2014,3,3,14,48);
var yourDateMsec = yourDate.getTime();
function F_count() {
	var nowDate = new Date();
	var nowDateMsec = nowDate.getTime();
	var msec = yourDateMsec - nowDateMsec;
	if (msec<=0)
	{
		// Добавить клип
		clearInterval(interval);
	}
	else
	{
		// Не добавить клип
	}
}
 
var interval = setInterval(F_count,1000);
F_count();

Старый 14.04.2014, 18:09
dimka_boy вне форума Посмотреть профиль Отправить личное сообщение для dimka_boy Найти все сообщения от dimka_boy
  № 10  
Ответить с цитированием
dimka_boy

Регистрация: Sep 2013
Сообщений: 10
Спасибо! Не с первого раза правда, но получилось)

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.