Таймер обратного отсчета(остановка и запуск при нажатии...)

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Hiller1
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Hiller1 »

Но это же обычный таймер,а не таймер обратного отсчета
Аватара пользователя
Abarmotina
Сообщения: 469
Зарегистрирован: 21 апр 2012, 19:34

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Abarmotina »

Создай ещё одну переменную, которая будет хранить то число, с которого нужно начинать отсчёт.
tf.text = (int(tf.text)+1).toString(); // в текстовом поле добавляем 1...
После этого в этой строчке уменьшай её на единицу.
Hiller1
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Hiller1 »

Что не так то?Я делал переменную,делал вот так,один раз отнимает и все,как обойти эту ситуацию?

Код: Выделить всё

var t:Timer = new Timer(1000,25); // таймер... каждую секунду..t.addEventListener(TimerEvent.TIMER, te); // событие каждую секунду...t.start(); // старт.. function te(e:TimerEvent):void {    tf.text = (25-1).toString(); // в текстовом поле добавляем 1...}
Аватара пользователя
Soo_Jin
Сообщения: 18
Зарегистрирован: 16 июн 2013, 21:16

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Soo_Jin »

Если делать по твоему, то вот код:

Код: Выделить всё

var tf:TextField = new TextField();tf.text = "25";addChild(tf);var t:Timer = new Timer(1000, 25); // таймер... каждую секунду..t.addEventListener(TimerEvent.TIMER, te);// событие каждую секунду...t.start(); // старт..            function te(e:TimerEvent):void {            tf.text = (int(tf.text)-1).toString(); // вычитаем из текущего значения(25) 1        }
Но это не грамотно... :oops:
Не заметил 1 страницуИзображение
Hiller1
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Hiller1 »

Все спасибо!А как сделать,чтобы он после остановки заново запускался с 25 секунд,а не продолжал.Я думал за это отвечает reset(); , но нет.
Аватара пользователя
Abarmotina
Сообщения: 469
Зарегистрирован: 21 апр 2012, 19:34

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Abarmotina »

О Бог мой, что я вижу :shock:
Ну раз тааак, тоо... Просто если уже дошло до 0, забивай повторно значение 25.
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение sasha^ »

ага... ТС просто прикольный человек :)
вот кстати я накатал класик для работы с таймером обратного отсчета...
CountdownTimer.as

Код: Выделить всё

package {    import flash.utils.Timer;    import flash.text.TextField;    import flash.events.*;    import flash.display.DisplayObject;     public class CountdownTimer extends EventDispatcher {        private var tf:DisplayObject;        private var sec:int;        private var prop:String;        private var start_sec:int;        private var timer:Timer;                // событие по завершению отсчета...        public static const END_TIMER:String = 'endtimer';                public function CountdownTimer(tf:DisplayObject, sec:int, prop:String='text') {            this.tf = tf;            this.sec = this.start_sec = sec;            this.prop = prop;                        timer = new Timer(1000);        }                public function start():void { // старт..            try {                if(!timer.hasEventListener(TimerEvent.TIMER)) throw new Error('err');            }            catch(e:Error) {                timer.addEventListener(TimerEvent.TIMER, onTimer);                reset();            }            finally {                timer.start();            }        }                private function onTimer(e:TimerEvent):void { // каждую секунду..            try {                if(--sec < 0) throw new Error('err');            }            catch(e:Error) {                timer.stop();                var event:Event = new Event(CountdownTimer.END_TIMER, false, true);                this.dispatchEvent(event);                if(!event.isDefaultPrevented()) {                    reset();                }            }            finally {                tfval(sec);            }        }                public function stop():void { // приостановить...            timer.stop();        }                public function reset():void { // обнулить...            sec = start_sec;            timer.reset();            tfval(sec);        }                private function tfval(num:int):void { // установить значение поля...            tf[prop] = num.toString();        }                public function time(num:int):void { // установить новое время..            start_sec = num;        }    }}
использовать просто:

Код: Выделить всё

var t:CountdownTimer = new CountdownTimer(tf, 10);t.start(); /** доп функции..таймер имеет событие CountdownTimer.END_TIMER, оно возникает когда счет доходит до 0.t.addEventListener(CountdownTimer.END_TIMER, f);function f(e:Event):void {    // таймер дошел до 0...    // но не забываем, что start(); не поможет, т.к. есть стандартное поведение...    // потому нужно сделать так, например:    e.preventDefault(); // отменим стандартное поведение... обязательно нужно это сделать, иначе после выполнения    // этой функции таймер сброситься и остановится - это стандартное поведение...    t.start(); // запустим..    // !!! важно - таймер сам сбрасывает значение, если он дошел до 0 при старте...} можно также изменить время функцией time(int); где int - число int-овое, указывающее новое начальное время.t.time(5); // теперь с 5 секунд будем считать... и да, необязательно считать в текстовом поле... у таймер в конструкторе есть параметр третий - prop, который указывает какую переменную изменять, но важно чтобы этот объект был динамическим...(все отображаемые объекты - динамические)...var t:CountdownTimer = new CountdownTimer(myobj, 10, 'myprop'); // где myprop - мое свойство...*/ 
Hiller1
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Hiller1 »

я все вопросы, ссылки на картинки, разгадки и пр. храню в бд... потом делаю запрос к php и он отвечает, что типа вот тебе такой вопрос.. потом по ссылке с сервера гружу картинку, ну и чел угадывает... во вторых тяжелая будет игра и оч долго грузить, если картинки в игре будут... в третих - при каждом обновлении нужно перезаливать флеш... при варианте db-php ничего не нужно.. ток в админке(как я) добавлять вопросы.. что занимает пару минут на вопрос, подсказку и пр. а флеш у меня уже сам все знает грузит все это и т.д. :)
для такой реализации нужно знать: php, бд(mysql обычно..), URLLoader(загрузка данных),Loader(загрузка картинок), формат передачи JSON(он компактнее и удобнее XML)
Разложите все по полочкам,подскажите поподробнее что да как будет работать.И где можно обучиться.Исходники возможно есть по работе этого.
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение sasha^ »

Разложите все по полочкам,подскажите поподробнее что да как будет работать.И где можно обучиться.Исходники возможно есть по работе этого.
лично я не буду делать за кого-то чужую работу... может кто-то другой ответит.. слишком уж много хотите, да еще и готовое и бесплатно :)

ps. я и так подробно описал что да как.
Hiller1
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58

Re: Таймер обратного отсчета(остановка и запуск при нажатии...)

Сообщение Hiller1 »

Здравствуйте еще раз!А скажите пожалуйста sasha^ где вы обучились ActionScripts,у и где вообще учатся программисты ,которые делают приложения для соц.сетей???
Ответить