Просмотр полной версии : Часы 2х временем
sebastyan011
09.01.2013, 22:43
Здраствуйте. Я не знал куда обратится но наткнулся на ваш сайт надеюсь что вы поможете.
В общем я хочу сделать такие флеш часы, которые работали в 2 раза быстрее. Тобишь за одни сутки проходило либо 2 суток либо полтора. Очень срочно нужно помогите пожалуйста, заранее спасибо)
А что конкретно не получается? На чем вы остановились?
sebastyan011
09.01.2013, 23:04
А что конкретно не получается? На чем вы остановились?
можна на ты, я вот часы создаю но они работают по мск но не суть. мне нужно что бы они работали в 2х раза быстрее тобишь за сутки проходило двое суток или как то так. Ускорить время на часиках
Прикрепите исходник, обычно это ускоряет решение вопроса, а иногда без исходника него вообще сказать что-либо трудно, что именно нужно изменить / как доработать. Сейчас именно последний случай.
("Расширенный режим" редактирования сообщения, далее "Управление вложениями"). Если он у вас в FLA, учтите, что старшие версии Adobe Flash стоят не у всех, пересохряняйте в минимально возможной версии.
PS. На "ты" можно, но мне удобнее так как сейчас.
sebastyan011
09.01.2013, 23:12
Вы можете сейчас зайти в скайп ? пожалуйста
К сожалению, не располагаю сейчас возможностью общаться лично. Если вы были готовы задать здесь вопрос, то будьте готовы и показать вашу работу. Тогда кто-то (возможно, что и я), знающий, в чем дело, захочет вам дать совет при наличии времени/желания помочь. А для этого нужно видеть, что у вас есть (проблемный код, или, что лучше, исходник).
На форуме обычно взаимодействие между участниками происходит именно по такому принципу.
sebastyan011
09.01.2013, 23:30
Вот примерно так
От готового SWF толку нет, речь шла об исходнике. Как можно вам помочь с решением, не видя кода?
sebastyan011
09.01.2013, 23:39
Извините просто загружен не много, вот пожалуйста
Увы, CS5.5 я открыть не могу (выше я писал о версиях), придется вам подождать других советчиков.
Ну либо показать здесь код (код оформляется тегами ).
На самом деле, не совсем понятно, что точно вы хотите. Я в принципе понимаю, как у вас построены часы, но они берут значение времени из системы пользователя, нашел в FLA этот кусок, не открывая его:
[AS]
time=new Date();
var seconds = time.getSeconds()
var minutes = time.getMinutes()
var hours = time.getHours()
Поясню, о чем я. Обычно когда говорят "в два раза быстрее", то предполагается какой-то промежуток времени, а не абсолютное значение.
Иными словами - если сейчас 22:50, то какое время должны показывать часы по вашему, как вы хотите?
Или если сегодня 9 января, то часы должны основываться на том, что сегодня 18 января? А как с годом быть тогда?
Вопрос вам нужно было задать сразу, конечно.
sebastyan011
09.01.2013, 23:44
time=new Date(); // time object
var seconds = time.getSeconds()
var minutes = time.getMinutes()
var hours = time.getHours()
if (hours<5) {
ampm = "AM";
}
else{
ampm = "PM";
}
while(hours >24){
hours = hours - 12;
}
if(hours<10)
{
hours = "0" + hours;
}
if(minutes<10)
{
minutes = "0" + minutes;
}
if(seconds<10)
{
seconds = "0" + seconds;
}
clock_txt.text = hours + ":" + minutes + ":" + seconds +" "+ ampm;
Добавлено через 5 минут
да но суть наверно же не меняется? мне просто нужно что бы они работали побыстрее (
См. мое предыдущее сообщение.
sebastyan011
10.01.2013, 00:00
хм мне неважен год день ибо у меня тупо часы нет не даты на них нечего например сеичас 23:00 9 января мне надо что бы было уже 10 января 16-17 часов где-то
Уф. Пишите, расставляя запятые.
Предложения должны начинаться с больших букв.
Это правило форума. Да и читать невозможно.
По сути: " 10 января 16-17 часов где-то" - это не в "2 раза быстрее".
Для чего это все нужно? Если бы вы указали, то можно было бы подсказать решение.
UPD:
Вот вам примерное решение. Добавьте новые строки в начало:
time = new Date(); // time object
var time_fast:Number = time.getTime();
time_fast *= 2;
time.setTime(time_fast);
var seconds = time.getSeconds()
var minutes = time.getMinutes()
var hours = time.getHours()
Ниже все то же самое.
Часы пойдут в 2 раза быстрее. (Но это бред, разумеется с точки зрения смены дат, поскольку здесь увеличивается в два раза время, прошедшее с January 1, 1970, но вам это всё равно, как вы обозначили).
Часы пойдут в 2 раза быстрее. (Но это бред, разумеется с точки зрения смены дат, поскольку здесь увеличивается в два раза время, прошедшее с January 1, 1970, но вам это всё равно, как вы обозначили).
Можно еще запомнить время на старте:
// Старт:
startTime = new Date().getTime();
// Обновление времени:
effectiveTime = startTime + (new Date().getTime() - startTime) * 2;
Т.е. пользователь открыл часы и увидел настоящее время, а потом удивился, что время идет в 2 раза быстрее.
expl, да, вот именно этот момент я пытался вытрясти из ТС, говоря о промежутке времени. Ведь "в два раза быстрее" - недостаточное условие.
Промежуток предполагает некий начальный момент. А так, как предложил я выше - происходит умножение на 2 промежутка от 1 января 1970 года. Ну ТС пока ничего не ответил.
sebastyan011
12.01.2013, 21:13
Спасибо ребят за помощь все так как я и хотел,но одно большое но!
Я не учел что в городах с другим часовым поясом оно будет дико отличатся.
Мне нужно что бы было время во-первых во всех городах (независимо от часового пояса) показывали (часики ) одно и тоже время. Ну и во-вторых что бы они работали побыстрее
Чтобы работали побыстрее, замените 2 на большее число.
А чтобы часики "во всех городах (независимо от часового пояса) показывали (часики ) одно и тоже время", нужно, чтобы флешка после загрузки брала стартовое время с самого сервера, например, посредством PHP-скрипта.
sebastyan011
12.01.2013, 21:22
А без сервера никак да?
Никак. Флешка работает на стороне клиента. Чтобы все флешки работали одинаково, нужно, чтобы стартовое время было одинаковом.
Вообще не представляю, в чем тут сложность может быть. В коде публикации флешки можно ввести параметром flashvars начальное время, которое будет динамически меняться в этом месте страницы при ее при генерации (когда сервер будет отдавать клиенту-браузеру страницу). Флешка просто заберет это значение посредством flashvars, его только надо будет правильно преобразовать из строчного значения в число (в формат даты).
sebastyan011
12.01.2013, 21:29
Я вот честно не понимаю как это и что я слышал что можно так но как сделать без понятия. Ты можешь написать код? Пожалуйста?
Тут надо сделать следующее:
1. Для вывода времени сервера в нужном формате в параметре публикации flashvars нужно разобраться, как выводится время посредством PHP. Смотрим тут (http://php.net/manual/ru/function.date.php).
2. Правильно опубликовать флешку на странице (с применением вышеупомянутого параметра flashvars). Использовать надо SWFObject (http://habrahabr.ru/post/31615/) (рекомендую динмич. способ).
Видимо, рациональнее всего выводить во flashvars несколькими переменными год, дату, час, минуты и секунды.
3. После этого использовать конструктор Date (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000965.html) с применением данных из flashvars наподобие:
// Старт:
startTime = new Date(parseInt(currentYear), parseInt(currentMonth), parseInt(currentDay), parseInt(currentHour), parseInt(currentMinute), parseInt(currentSec)).getTime();
где все эти currentXxx - переменные, переданные через flashvars.
И далее по коду от expl или моему выше.
Как-то так.
PS. К сожалению, лично написать все это за вас не могу.
sebastyan011
12.01.2013, 21:49
Эх большое спасибо очень сильно помогли.
Конечно данное действие у меня врядли получится выполнить но все же попробую.
Еще раз спасибо.
Пожалуйста.
Для начала попробуйте разобраться с правильной публикацией флешки (см. п.2 выше) и попробуйте получить во флешке с помощью flashvars хотя бы что-то.
Добьетесь этого - решить свою задачу постепенно сумеете.
sebastyan011
12.01.2013, 21:55
Угу ) спасибо я постараюсь)
Хочу научится проигрователь еще делать для видео)
Найдите там в статье момент такой
var flashvars = {
name1: "hello",
name2: "world",
name3: "foobar"
};
- это пример передачи значений переменных со страницы во флешку.
При такой публикации во флеше будут доступны все эти name с соответственными строковыми значениями (это суть flashvars).
А вам надо передавать не эти абстрактные name, а год, дату и т.п.
Никак. Флешка работает на стороне клиента. Чтобы все флешки работали одинаково, нужно, чтобы стартовое время было одинаковом.
Не, универсальное время единое для всех поясов можно узнать через класс Data, а по нему узнать для любого часового пояса.
Правда другой вопрос - можно ли верить клиенским часам - нам попадались пользователи, у которых был выставлен 1997 год :). Попадались и другие, с 2002, 2000, и т.д. Да что там - я сам несколько лет использовал компьютер, на котором был выставлен 2002 год - просто биос сел, а заменить (или время при каждом запуске выставлять) - есс-но в падлу. Я уж молчу об отставании на какие-то минуты.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.