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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)

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

Сообщение Hiller1 » 24 дек 2013, 17:43

Но это же обычный таймер,а не таймер обратного отсчета
Hiller1

 
Автор темы
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Abarmotina » 24 дек 2013, 19:39

Создай ещё одну переменную, которая будет хранить то число, с которого нужно начинать отсчёт.
tf.text = (int(tf.text)+1).toString(); // в текстовом поле добавляем 1...

После этого в этой строчке уменьшай её на единицу.
Пока они пили водку и катались на скейтах, мы строили бизнес и делали деньги!
Аватара пользователя
Abarmotina

 
Сообщения: 469
Зарегистрирован: 21 апр 2012, 19:34
Благодарил (а): 16 раз.
Поблагодарили: 19 раз.

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

Сообщение Hiller1 » 24 дек 2013, 20:55

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

  1. var t:Timer = new Timer(1000,25); // таймер... каждую секунду..
  2. t.addEventListener(TimerEvent.TIMER, te); // событие каждую секунду...
  3. t.start(); // старт..
  4.  
  5. function te(e:TimerEvent):void {
  6.     tf.text = (25-1).toString(); // в текстовом поле добавляем 1...
  7. }
Hiller1

 
Автор темы
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Soo_Jin » 24 дек 2013, 22:45

Если делать по твоему, то вот код:
  1. var tf:TextField = new TextField();
  2. tf.text = "25";
  3. addChild(tf);
  4. var t:Timer = new Timer(1000, 25); // таймер... каждую секунду..
  5. t.addEventListener(TimerEvent.TIMER, te);// событие каждую секунду...
  6. t.start(); // старт..
  7.            
  8. function te(e:TimerEvent):void {
  9.             tf.text = (int(tf.text)-1).toString(); // вычитаем из текущего значения(25) 1
  10.         }

Но это не грамотно... :oops:
Не заметил 1 страницуИзображение
Аватара пользователя
Soo_Jin

 
Сообщения: 18
Зарегистрирован: 16 июн 2013, 21:16
Откуда: Санкт-Петербург
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.

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

Сообщение Hiller1 » 25 дек 2013, 12:43

Все спасибо!А как сделать,чтобы он после остановки заново запускался с 25 секунд,а не продолжал.Я думал за это отвечает reset(); , но нет.
Hiller1

 
Автор темы
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Abarmotina » 25 дек 2013, 21:35

О Бог мой, что я вижу :shock:
Ну раз тааак, тоо... Просто если уже дошло до 0, забивай повторно значение 25.
Пока они пили водку и катались на скейтах, мы строили бизнес и делали деньги!
Аватара пользователя
Abarmotina

 
Сообщения: 469
Зарегистрирован: 21 апр 2012, 19:34
Благодарил (а): 16 раз.
Поблагодарили: 19 раз.

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

Сообщение sasha^ » 26 дек 2013, 00:01

ага... ТС просто прикольный человек :)
вот кстати я накатал класик для работы с таймером обратного отсчета...
CountdownTimer.as
  1. package {
  2.     import flash.utils.Timer;
  3.     import flash.text.TextField;
  4.     import flash.events.*;
  5.     import flash.display.DisplayObject;
  6.  
  7.     public class CountdownTimer extends EventDispatcher {
  8.         private var tf:DisplayObject;
  9.         private var sec:int;
  10.         private var prop:String;
  11.         private var start_sec:int;
  12.         private var timer:Timer;
  13.        
  14.         // событие по завершению отсчета...
  15.         public static const END_TIMER:String = 'endtimer';
  16.        
  17.         public function CountdownTimer(tf:DisplayObject, sec:int, prop:String='text') {
  18.             this.tf = tf;
  19.             this.sec = this.start_sec = sec;
  20.             this.prop = prop;
  21.            
  22.             timer = new Timer(1000);
  23.         }
  24.        
  25.         public function start():void { // старт..
  26.             try {
  27.                 if(!timer.hasEventListener(TimerEvent.TIMER)) throw new Error('err');
  28.             }
  29.             catch(e:Error) {
  30.                 timer.addEventListener(TimerEvent.TIMER, onTimer);
  31.                 reset();
  32.             }
  33.             finally {
  34.                 timer.start();
  35.             }
  36.         }
  37.        
  38.         private function onTimer(e:TimerEvent):void { // каждую секунду..
  39.             try {
  40.                 if(--sec < 0) throw new Error('err');
  41.             }
  42.             catch(e:Error) {
  43.                 timer.stop();
  44.                 var event:Event = new Event(CountdownTimer.END_TIMER, false, true);
  45.                 this.dispatchEvent(event);
  46.                 if(!event.isDefaultPrevented()) {
  47.                     reset();
  48.                 }
  49.             }
  50.             finally {
  51.                 tfval(sec);
  52.             }
  53.         }
  54.        
  55.         public function stop():void { // приостановить...
  56.             timer.stop();
  57.         }
  58.        
  59.         public function reset():void { // обнулить...
  60.             sec = start_sec;
  61.             timer.reset();
  62.             tfval(sec);
  63.         }
  64.        
  65.         private function tfval(num:int):void { // установить значение поля...
  66.             tf[prop] = num.toString();
  67.         }
  68.        
  69.         public function time(num:int):void { // установить новое время..
  70.             start_sec = num;
  71.         }
  72.     }
  73. }


использовать просто:
  1. var t:CountdownTimer = new CountdownTimer(tf, 10);
  2. t.start();
  3.  
  4. /** доп функции..
  5. таймер имеет событие CountdownTimer.END_TIMER, оно возникает когда счет доходит до 0.
  6. t.addEventListener(CountdownTimer.END_TIMER, f);
  7. function f(e:Event):void {
  8.     // таймер дошел до 0...
  9.     // но не забываем, что start(); не поможет, т.к. есть стандартное поведение...
  10.     // потому нужно сделать так, например:
  11.     e.preventDefault(); // отменим стандартное поведение... обязательно нужно это сделать, иначе после выполнения
  12.     // этой функции таймер сброситься и остановится - это стандартное поведение...
  13.     t.start(); // запустим..
  14.     // !!! важно - таймер сам сбрасывает значение, если он дошел до 0 при старте...
  15. }
  16.  
  17. можно также изменить время функцией time(int); где int - число int-овое, указывающее новое начальное время.
  18. t.time(5); // теперь с 5 секунд будем считать...
  19.  
  20. и да, необязательно считать в текстовом поле... у таймер в конструкторе есть параметр третий - prop, который указывает какую переменную изменять, но важно чтобы этот объект был динамическим...(все отображаемые объекты - динамические)...
  21. var t:CountdownTimer = new CountdownTimer(myobj, 10, 'myprop'); // где myprop - мое свойство...
  22. */
  23.  
sasha^

 
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52
Благодарил (а): 1 раз.
Поблагодарили: 136 раз.

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

Сообщение Hiller1 » 29 дек 2013, 00:46

я все вопросы, ссылки на картинки, разгадки и пр. храню в бд... потом делаю запрос к php и он отвечает, что типа вот тебе такой вопрос.. потом по ссылке с сервера гружу картинку, ну и чел угадывает... во вторых тяжелая будет игра и оч долго грузить, если картинки в игре будут... в третих - при каждом обновлении нужно перезаливать флеш... при варианте db-php ничего не нужно.. ток в админке(как я) добавлять вопросы.. что занимает пару минут на вопрос, подсказку и пр. а флеш у меня уже сам все знает грузит все это и т.д. :)
для такой реализации нужно знать: php, бд(mysql обычно..), URLLoader(загрузка данных),Loader(загрузка картинок), формат передачи JSON(он компактнее и удобнее XML)

Разложите все по полочкам,подскажите поподробнее что да как будет работать.И где можно обучиться.Исходники возможно есть по работе этого.
Hiller1

 
Автор темы
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение sasha^ » 29 дек 2013, 02:23

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

ps. я и так подробно описал что да как.
sasha^

 
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52
Благодарил (а): 1 раз.
Поблагодарили: 136 раз.

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

Сообщение Hiller1 » 29 дек 2013, 23:13

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

 
Автор темы
Сообщения: 16
Зарегистрирован: 15 дек 2013, 09:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.След.

Вернуться в Создание Flash-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0