Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.03.2016, 12:35
rescuer вне форума Посмотреть профиль Отправить личное сообщение для rescuer Найти все сообщения от rescuer
  № 1  
Ответить с цитированием
rescuer

Регистрация: Mar 2016
Сообщений: 2
По умолчанию Re: Как настроить таймер?

Здравствуйте! Помогите мне, пожалуйста, настроить таймер!
Я случайно раздобыл код замечательного таймера. Если нажать на кнопку "старт", то он запускается. Если на "стоп", то останавливается. Если после того, как приложение будет закрыто, а потом его опять открыть, то на таймере остаётся сохранённым его последнее значение, на котором он был остановлен.
Всё замечательно работает! Но мне нужно сделать так, чтобы таймер останавливался не по нажатию на кнопку "стоп", а автоматически после отсчёта определённого количества цифр. То есть, после определённого числа срабатываний этого отсчёта.
Этот таймер начинает отсчёт с цифры 100. А как сделать так, чтобы он останавливался после 30 срабатываний на цифре 70, и чтобы эта цифра 70 осталась при новом открытии приложения? А потом опять нажал на "старт", он отсчитал бы ещё 30, и остановился на цифре 40, и чтобы эта 40 опять была бы сохранена при новом запуске приложения?
Посмотрите, пожалуйста, этот код! Может поможет кто?
Код AS3:
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.net.SharedObject;
 
//объект SharedObject
var so:SharedObject = SharedObject.getLocal("my_game_data");
 
// Таймер
var maxCount:uint = 100;
var timer:Timer = new Timer(1000);
//сюда будем класть сохранённое значение
var curCount:Number = 0;
 
var noLessVisible:Boolean = false;
 
//таймер для сохранения данных, 100 - частота сохранения данных
var saveTimer:Timer = new Timer(100);
 
timer.addEventListener(TimerEvent.TIMER, fl_TimerHandler);
 
saveTimer.addEventListener(TimerEvent.TIMER,saveStuff);
saveTimer.start();
 
noLess.visible = false;
 
if (so.data.noLessVisible != undefined)
{
	noLessVisible = so.data.noLessVisible;
}
else
{
	noLessVisible = false;
}
 
noLess.visible = noLessVisible;
 
if (so.data.curCount != undefined)
{
	curCount = so.data.curCount;
	maxCount = curCount;
	timerTF.text = String(maxCount);
}
else
{
	timerTF.text = "";
}
 
btnStart.addEventListener(MouseEvent.CLICK, onClick);
 
function onClick(event:MouseEvent):void
{
	if (timer.running)
	{
		noLess.visible = true;
	}
	else
	{
		timer.start();
		btnStart.visible = false;
		btnStop.visible = true;
		noLess.visible = false;
 
		LessonnoActiv.visible = true;
 
		if (timer.currentCount == 0)
		{
			timerTF.text = String(maxCount);
		}
	}
}
 
function fl_TimerHandler(event:TimerEvent):void
{
	timerTF.text = String(maxCount-timer.currentCount);
	if (timer.currentCount >= maxCount)
	{
		maxCount = 100;
		so.data.curCount = maxCount;
		timer.reset();
		noLess.visible = true;
		btnStart.visible = true;
		noLessVisible = noLess.visible;
		so.data.noLessVisible = noLessVisible;
	}
}
 
function saveStuff(e:TimerEvent)
{
	if (timer.running)
	{
		curCount = maxCount - timer.currentCount;
		so.data.curCount = curCount;
	}
	else
	{
		curCount = 0;
	}
}
 
 
btnStop.addEventListener(MouseEvent.CLICK, fl_ClickToHide_5);
 
function fl_ClickToHide_5(event:MouseEvent):void
{
	timer.stop();
	btnStop.visible = false;
	btnStart.visible = true;
}

Старый 24.03.2016, 19:33
Comer вне форума Посмотреть профиль Отправить личное сообщение для Comer Найти все сообщения от Comer
  № 2  
Ответить с цитированием
Comer

Регистрация: Dec 2010
Сообщений: 121
Цитата:
Сообщение от rescuer Посмотреть сообщение
Посмотрите, пожалуйста, этот код! Может поможет кто?
Я так понимаю, что нужно добавить в код вот эту строчку:
Код AS3:
timer.repeatCount = 30;
Вот только, честно говоря, не знаю куда именно. Может кто-то из более опытных флеш-мастеров подскажет?

Старый 24.03.2016, 19:47
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 3  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Код элементарный, автор не хочет сам что-то делать.
Изменения в код fl_TimerHandler.

Так же не прописаны все исходы. Что делать, когда истекут последние 40? Либо программу закроют посреди контрольных точек. И т.д.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 24.03.2016, 19:58
Comer вне форума Посмотреть профиль Отправить личное сообщение для Comer Найти все сообщения от Comer
  № 4  
Ответить с цитированием
Comer

Регистрация: Dec 2010
Сообщений: 121
Цитата:
Сообщение от GBee Посмотреть сообщение
Код элементарный, автор не хочет сам что-то делать.
Не уверен, что автор ленится. Наверное, просто не знает. Он же пишет, что этот код раздобыл случайно. Я вот тоже, например, ещё не сильно разбираюсь. Просто столкнулся когда-то с похожей проблемой, вот и вспомнил про ту строчку, которую ему дал. А куда её вставить я и сам не знаю...
Если ты знаешь, то подскажи. Не дай человеку мучиться...

Старый 24.03.2016, 20:25
rescuer вне форума Посмотреть профиль Отправить личное сообщение для rescuer Найти все сообщения от rescuer
  № 5  
Ответить с цитированием
rescuer

Регистрация: Mar 2016
Сообщений: 2
Я вставил эту строчку вот в эту часть кода:
Код AS3:
btnStart.addEventListener(MouseEvent.CLICK, onClick);
 
function onClick(event:MouseEvent):void
{
    if (timer.running)
    {
        noLess.visible = true;
 
    }
    else
    {
        timer.start();
        timer.repeatCount = 30;
        btnStart.visible = false;
        btnStop.visible = true;
        noLess.visible = false;
 
        LessonnoActiv.visible = true;
 
        if (timer.currentCount == 0)
        {
            timerTF.text = String(maxCount);
        }
    }
}
Таймер останавливается на нужной цифре 70. Но только при повторном открытии открывается не 70, как должно быть, а 71. Можно это исправить?

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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