Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Часы 2х временем (http://www.flasher.ru/forum/showthread.php?t=192164)

sebastyan011 09.01.2013 22:43

Часы 2х временем
 
Здраствуйте. Я не знал куда обратится но наткнулся на ваш сайт надеюсь что вы поможете.
В общем я хочу сделать такие флеш часы, которые работали в 2 раза быстрее. Тобишь за одни сутки проходило либо 2 суток либо полтора. Очень срочно нужно помогите пожалуйста, заранее спасибо)

mooncar 09.01.2013 22:58

А что конкретно не получается? На чем вы остановились?

sebastyan011 09.01.2013 23:04

Цитата:

Сообщение от mooncar (Сообщение 1114714)
А что конкретно не получается? На чем вы остановились?

можна на ты, я вот часы создаю но они работают по мск но не суть. мне нужно что бы они работали в 2х раза быстрее тобишь за сутки проходило двое суток или как то так. Ускорить время на часиках

mooncar 09.01.2013 23:08

Прикрепите исходник, обычно это ускоряет решение вопроса, а иногда без исходника него вообще сказать что-либо трудно, что именно нужно изменить / как доработать. Сейчас именно последний случай.
("Расширенный режим" редактирования сообщения, далее "Управление вложениями"). Если он у вас в FLA, учтите, что старшие версии Adobe Flash стоят не у всех, пересохряняйте в минимально возможной версии.

PS. На "ты" можно, но мне удобнее так как сейчас.

sebastyan011 09.01.2013 23:12

Вы можете сейчас зайти в скайп ? пожалуйста

mooncar 09.01.2013 23:19

К сожалению, не располагаю сейчас возможностью общаться лично. Если вы были готовы задать здесь вопрос, то будьте готовы и показать вашу работу. Тогда кто-то (возможно, что и я), знающий, в чем дело, захочет вам дать совет при наличии времени/желания помочь. А для этого нужно видеть, что у вас есть (проблемный код, или, что лучше, исходник).
На форуме обычно взаимодействие между участниками происходит именно по такому принципу.

sebastyan011 09.01.2013 23:30

Вложений: 1
Вот примерно так

mooncar 09.01.2013 23:32

От готового SWF толку нет, речь шла об исходнике. Как можно вам помочь с решением, не видя кода?

sebastyan011 09.01.2013 23:39

Вложений: 1
Извините просто загружен не много, вот пожалуйста

mooncar 09.01.2013 23:43

Увы, CS5.5 я открыть не могу (выше я писал о версиях), придется вам подождать других советчиков.
Ну либо показать здесь код (код оформляется тегами [as]).

На самом деле, не совсем понятно, что точно вы хотите. Я в принципе понимаю, как у вас построены часы, но они берут значение времени из системы пользователя, нашел в FLA этот кусок, не открывая его:
Код AS1/AS2:

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

Код AS1/AS2:

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 минут
да но суть наверно же не меняется? мне просто нужно что бы они работали побыстрее (

mooncar 09.01.2013 23:57

См. мое предыдущее сообщение.

sebastyan011 10.01.2013 00:00

хм мне неважен год день ибо у меня тупо часы нет не даты на них нечего например сеичас 23:00 9 января мне надо что бы было уже 10 января 16-17 часов где-то

mooncar 10.01.2013 00:11

Уф. Пишите, расставляя запятые.
Предложения должны начинаться с больших букв.
Это правило форума. Да и читать невозможно.

По сути: " 10 января 16-17 часов где-то" - это не в "2 раза быстрее".
Для чего это все нужно? Если бы вы указали, то можно было бы подсказать решение.

UPD:
Вот вам примерное решение. Добавьте новые строки в начало:

Код AS1/AS2:

timenew 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, но вам это всё равно, как вы обозначили).

expl 10.01.2013 16:46

Цитата:

Часы пойдут в 2 раза быстрее. (Но это бред, разумеется с точки зрения смены дат, поскольку здесь увеличивается в два раза время, прошедшее с January 1, 1970, но вам это всё равно, как вы обозначили).
Можно еще запомнить время на старте:
Код AS3:

// Старт:
startTime = new Date().getTime();
 
// Обновление времени:
effectiveTime = startTime + (new Date().getTime() - startTime) * 2;

Т.е. пользователь открыл часы и увидел настоящее время, а потом удивился, что время идет в 2 раза быстрее.

mooncar 10.01.2013 16:49

expl, да, вот именно этот момент я пытался вытрясти из ТС, говоря о промежутке времени. Ведь "в два раза быстрее" - недостаточное условие.
Промежуток предполагает некий начальный момент. А так, как предложил я выше - происходит умножение на 2 промежутка от 1 января 1970 года. Ну ТС пока ничего не ответил.

sebastyan011 12.01.2013 21:13

Спасибо ребят за помощь все так как я и хотел,но одно большое но!
Я не учел что в городах с другим часовым поясом оно будет дико отличатся.
Мне нужно что бы было время во-первых во всех городах (независимо от часового пояса) показывали (часики ) одно и тоже время. Ну и во-вторых что бы они работали побыстрее

mooncar 12.01.2013 21:21

Чтобы работали побыстрее, замените 2 на большее число.
А чтобы часики "во всех городах (независимо от часового пояса) показывали (часики ) одно и тоже время", нужно, чтобы флешка после загрузки брала стартовое время с самого сервера, например, посредством PHP-скрипта.

sebastyan011 12.01.2013 21:22

А без сервера никак да?

mooncar 12.01.2013 21:26

Никак. Флешка работает на стороне клиента. Чтобы все флешки работали одинаково, нужно, чтобы стартовое время было одинаковом.
Вообще не представляю, в чем тут сложность может быть. В коде публикации флешки можно ввести параметром flashvars начальное время, которое будет динамически меняться в этом месте страницы при ее при генерации (когда сервер будет отдавать клиенту-браузеру страницу). Флешка просто заберет это значение посредством flashvars, его только надо будет правильно преобразовать из строчного значения в число (в формат даты).

sebastyan011 12.01.2013 21:29

Я вот честно не понимаю как это и что я слышал что можно так но как сделать без понятия. Ты можешь написать код? Пожалуйста?

mooncar 12.01.2013 21:44

Тут надо сделать следующее:

1. Для вывода времени сервера в нужном формате в параметре публикации flashvars нужно разобраться, как выводится время посредством PHP. Смотрим тут.

2. Правильно опубликовать флешку на странице (с применением вышеупомянутого параметра flashvars). Использовать надо SWFObject (рекомендую динмич. способ).
Видимо, рациональнее всего выводить во flashvars несколькими переменными год, дату, час, минуты и секунды.

3. После этого использовать конструктор Date с применением данных из flashvars наподобие:
Код AS1/AS2:

// Старт:
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

Эх большое спасибо очень сильно помогли.
Конечно данное действие у меня врядли получится выполнить но все же попробую.
Еще раз спасибо.

mooncar 12.01.2013 21:53

Пожалуйста.
Для начала попробуйте разобраться с правильной публикацией флешки (см. п.2 выше) и попробуйте получить во флешке с помощью flashvars хотя бы что-то.
Добьетесь этого - решить свою задачу постепенно сумеете.

sebastyan011 12.01.2013 21:55

Угу ) спасибо я постараюсь)
Хочу научится проигрователь еще делать для видео)

mooncar 12.01.2013 21:56

Найдите там в статье момент такой
Код:

var flashvars = {
  name1: "hello",
  name2: "world",
  name3: "foobar"
};

- это пример передачи значений переменных со страницы во флешку.
При такой публикации во флеше будут доступны все эти name с соответственными строковыми значениями (это суть flashvars).
А вам надо передавать не эти абстрактные name, а год, дату и т.п.

expl 15.01.2013 16:32

Цитата:

Никак. Флешка работает на стороне клиента. Чтобы все флешки работали одинаково, нужно, чтобы стартовое время было одинаковом.
Не, универсальное время единое для всех поясов можно узнать через класс Data, а по нему узнать для любого часового пояса.
Правда другой вопрос - можно ли верить клиенским часам - нам попадались пользователи, у которых был выставлен 1997 год :). Попадались и другие, с 2002, 2000, и т.д. Да что там - я сам несколько лет использовал компьютер, на котором был выставлен 2002 год - просто биос сел, а заменить (или время при каждом запуске выставлять) - есс-но в падлу. Я уж молчу об отставании на какие-то минуты.


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

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