Просмотр полной версии : часы: альтернатива onEnterFrame
в скрипт встроены часы типа getDate. поскольку часы это только часть кода, то просчет времени onEnterFrame очень отягощает. какие могут быть альтернативы? точно ли будет отмерять время setInterval поставленный, скажем, на пол-секунды?
вообще не понятно чего вы хотите
Волгоградец
15.01.2009, 13:53
Сам setInterval ничего не отмеряет. Можно поставить интервал в 1с чтобы обновлять экран раз в секунду.
я использую объект типа new Date, чтобы получать в режиме реального времени секунды, минуты, часы. в сцене объект движется в зависимости от этих данных (секунды умножаются на определенное число и это число задает координаты для объекта в сцене). и на данный момент время запрашивается onEnterFrame и объект движется onEnterFrame.
опять ничего не понял. если вам нужны только секунды, тогда:
_root.onEnterFrame = function() {
var a:Date = new Date();
a.getSeconds();
}
Волгоградец
15.01.2009, 16:20
Если юзать onEnterFrame, то при частоте кадров 30 будет 30 раз запрошено одно и то же значение - пустая трата ресурсов. В интервале логичнее было бы запрашивать текущее время.
var a:Date = new Date();
var b:Number = a.getSeconds();
function seconds():Void{
b = a.getSeconds();
}
var intID:Number = (this, "seconds", 1000);
chingachgoog
15.01.2009, 16:28
Если нужно просто отлавливать полсекунды, то лучше setInterval трудно, что-то придумать - тогда может вообще эта затея с Date не нужна?
Fatality
15.01.2009, 17:30
var intID:Number = (this,"seconds",1000);
это как понимать ?оО
var intID:Number = setInterval(this, "seconds", 1000);
1000 милисекунд тут использовать нежелательно, если процессор будет перегружен и справится не за 1000, а например за 1018, в идеале использовать 250
большое спасибо за ответы.
а вот еще вопрос: если в сцене должно находиться несколько циферблатов (разные часовые пояса), то самым рациональным решением будет разместить там прототип-Object, свойства которого будут включать в себя все сдвиги во времени? и самый ли этот нетребовательный к ресурсам способ?
Fatality
15.01.2009, 19:09
самый ли этот нетребовательный к ресурсам способ?в подобном приложении разница в производительности от использования объекта или храниения значений в отдельных переменных если и есть то настолько незначительна что не стоит об этом заморачиваться.
Делай как тебе удобнее, но лично я бы тоже выбрал объект =)
а как сделать атрибуты прототипа обновляемыми через интервал? я делаю trace
function traceIT (){
trace(_root['time']['mydate'].sec + "REPEATING")
}
setInterval(this, "traceIT", 100)
вот этого:
time = new Object();
time.mydate = new Date();
function seconds():Void{
time.mydate.sec = time.mydate.getSeconds();
}
setInterval(this, "seconds", 250);
но это,конечно же, неверно :)
вобщем, цель: регулярно отслеживать изменение числа секунд (а далее и минут, часов,...) с помощью прототипа, который хранит в себе все эти данные и постоянно их актуализирует
Fatality
15.01.2009, 21:02
В функции seconds ты получаешь секунды из объекта Date, но значение самого объекта не обновляется.
Соответственно делаем так:
time = new Object();
function seconds():Void
{
time.mydate = new Date();
time.mydate.sec = time.mydate.getSeconds();
}
setInterval(this, "seconds", 250);
и все работает.
P.S еще я не пойму зачем тебе этот мусор в коде
function traceIT (){
trace(_root['time']['mydate'].sec + "REPEATING")
}
setInterval(this, "traceIT", 100)
не проще ли выводить эти данные сразу в функции seconds ?
P.S еще я не пойму зачем тебе этот мусор в коде
я просто считываю с другого уровня. а код ваш заработал, только выдает раз в одну десятую секунды undefined. издержки setInterval, надо полагать. надеюсь, в дальнейшем это не скажется, в любом случае onEnterFrame жрет столько, что я его себе позволить не могу.
2 Fatality:
спасибо
Fatality
15.01.2009, 22:05
только выдает раз в одну десятую секунды undefined. издержки setInterval
конечно будет выдавать undefined так как у тебя данные обновляются раз в 250 мс, а отображаются раз в 100.
Разные уровни...
так это не проблема, можешь обращаться к переменной так _levelN.переменная где N - номер уровня или использовать свойство _global при объявлении переменной.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.