Показать сообщение отдельно
Старый 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;
}