PDA

Просмотр полной версии : Опять таймер...


ivaniyses
04.02.2014, 18:53
Проблема в том, что когда приложение нормально работает, всё идёт отлично, и работает так как надо.
Но когда я ускоряю процесс игры сторонним П.О. функция таймера выполняется максимальное количество раз.
p/s: Когда таймер доходит до определённого времени, он выполняет определённую функцию (добавляет +1 к переменной), но когда я запускаю чит, и ускоряю флешку он выполняет функцию до максимального колличества...(таймер не ускоряется, но функция работает неправельно)
Если кто понял в чём проблема помогите.

Код:
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

var money:Number = 50;
benzin_txt1.text = String(money);

var primer6:Timer = new Timer(100);//создаем экземпляр класса Timer
primer6.start();
//запускаем Timer;

primer6.addEventListener(TimerEvent.TIMER, tymerF);

function tymerF(event:TimerEvent):void
{

var time:Date = new Date();//создаем экземпляр класса Date, чтобы можно было пользоваться методами класса

var second:Number = time.getSeconds();//переменной second присваиваем значение текущей секунды



time_txt.text = String(second);//в текстовое поле вывести секунды
if (money <= 49)
{
if (second == 0)
{
money += 1;
benzin_txt1.text = String(money);
}
}
}









btn1.addEventListener(MouseEvent.CLICK, fun2);

function fun2(e:MouseEvent):void
{
if (money >= 10)
{
money -= 10;
benzin_txt1.text = String(money);
}
}

caseyryan
04.02.2014, 19:44
Что именно работает не правильно? Тут не телепаты

п.с. Могу сразу сказать, что вот это условие

if (second == 0)

вряд ли будет срабатывать (ну по крайней мере глючить будет точно)

BAXTER
04.02.2014, 20:14
Согласен с caseyryan.
таймер срабатывает каждые 100 мс, тем самым 10 раз в секунду вызывает функцию tymerF, в которой меняет значение second;
но при ускорении игры таймер не может "поймать" значение second чтобы равнялось 0;

Не знаю зачем вызывать функцию 600 раз в минуту, чтобы всего один раз изменить значение money;

Я бы сделал примерно:

var money:Number = 50;
var second:Number = 0;
benzin_txt1.text = String(money);

//изменим немного таймер
//поставим на одну секунду
var primer6:Timer = new Timer(1000,60);
primer6.start();

primer6.addEventListener(TimerEvent.TIMER, tymerF);
primer6.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);

function tymerF(e:TimerEvent):void
{
second++;
time_txt.text = String(second);
}

function onComplete(e:TimerEvent):void
{
if (money <= 49)
{
money++;
benzin_txt1.text = String(money);
}
second = 0;
primer6.start();
}

ivaniyses
04.02.2014, 20:37
А теперь скомпилируй приложение и ускорь его...
P/S: Мне нужно сделать таймер который нельзя будет взломать!
То, что ты мне предложил я использовал до того как понял что приложение уязвимо на ст.П.О...

Добавлено через 1 минуту
Так вот я и спрашиваю как в моём случае сделать не глючный таймер, но при этом чтобы он серялся к временем на компьютере, как впрочем у меня

Rzer
04.02.2014, 21:00
Проверяй в условии дату

var curTime:Number = new Date().getTime();
if (curTime-lastTime > SECONDS_PER_GOLD*1000){
lastTime =curTime;
money++;
}

Zebestov
04.02.2014, 22:01
Название темы не отражает сути вопроса.