Показать сообщение отдельно
Старый 22.09.2010, 18:12
temofony вне форума Посмотреть профиль Отправить личное сообщение для temofony Найти все сообщения от temofony
  № 1  
Ответить с цитированием
temofony
 
Аватар для temofony

Регистрация: Feb 2010
Сообщений: 153
Отправить сообщение для temofony с помощью ICQ Отправить сообщение для temofony с помощью Skype™
По умолчанию мистика с таймером

Доброго времени муток)Я столкнулся со странной проблемой.У меня на кадру есть 2 динам.поля:поле очков и поле таймера.Как вы можете предположить,время отматывается назад и очки тоже.При достижении определенного условия флешка переходит на кадр с game over.На кадре с гейм овером есть кнопка повторить,которая преводит головку плеера на кадр с уровнем.Проблема:на уровне время начинает мотаться быстрее в 2 раза и очки соответствеено тоже.И так происходит при каждом вылете на гейм овер и поворном начале уровня.Привожу исходник кадра с уровнем:
Код AS1/AS2:
stop();
 
cur_lvl=4;
Mouse.hide();
_global.score=1000;
function scoreminus() {
	score-=50;
}
setInterval(scoreminus,500);
 
function moveClip(){
	_global.speedMove;
	var numLength:Number;
	var numMaxLength:Number=Math.sqrt(Math.pow(Stage.width,2)+Math.pow(Stage.height,2));
	var rotation:Number=Math.atan2(_ymouse-clip._y,_xmouse-clip._x)+Math.PI/2;
	clip._rotation=(rotation/Math.PI)*180;
	numLength=Math.sqrt(Math.pow(clip._x-_xmouse,2)+Math.pow(clip._y-_ymouse,2));
	speedMove=17*(numLength/numMaxLength);
	clip._x+=Math.sin(rotation)*speedMove;
	clip._y-=Math.cos(rotation)*speedMove;
	updateAfterEvent();
}
timer=setInterval(moveClip,1);
_global.Seconds = 10; //ЗАДАЕМ СЕКУНДЫ;
_global.Minutes = 00; //ЗАДАЕМ МИНУТЫ;
_global.Hours = 00; //ЗАДАЕМ ЧАСЫ;
function TIMER() { //СОЗДАЕМ ФУНКЦИЮ ТАЙМЕРА;
if ((Seconds > 0) || (Minutes > 0) || (Hours > 0)) { //ЕСЛИ СЕКУНДЫ, ИЛИ МИНУТЫ, ИЛИ ЧАСЫ, БОЛЬШЕ НУЛЯ, ТО...
Seconds--; //СЕКУНДЫ УМЕНЬШАЕМ НА ЕДИНИЦУ;
if (Seconds < 0) { //ЕСЛИ СЕКУНДЫ МЕНЬШЕ НУЛЯ, ТО...
Minutes--; //МИНУТЫ УМЕНЬШАЕМ НА ЕДИНИЦУ;
Seconds = 59; //СЕКУНДАМ ПРИСВАЕВАЕМ ЗНАЧЕНИЕ 59;
if (Minutes < 0) { //ЕСЛИ МИНУТЫ МЕНЬШЕ НУЛЯ, ТО...
Hours--; //ЧАСЫ УМЕНЬШАЕМ НА ЕДИНИЦУ;
Minutes = 59; //МИНУТАМ ПРИСВАЕВАЕМ ЗНАЧЕНИЕ 59;
Seconds = 59; //СЕКУНДАМ ПРИСВАЕВАЕМ ЗНАЧЕНИЕ 59;
}
}
if (Seconds <= 9) { //ЕСЛИ СЕКУНДЫ МЕНЬШЕ 9, ТО...
var SS:String = "0" + Seconds; //СТАВИМ ПЕРЕД СЕКУНДАМИ 0;
} else { //ИНАЧЕ...
var SS:String = "" + Seconds; //НЕ СТАВИМ 0;
}
if (Minutes <= 9) { //ЕСЛИ МИНУТЫ МЕНЬШЕ 9, ТО...
var MM:String = "0" + Minutes; //СТАВИМ ПЕРЕД МИНУТАМИ 0;
} else { //ИНАЧЕ...
var MM:String = "" + Minutes; //НЕ СТАВИМ 0;
}
if (Hours <= 9) { //ЕСЛИ ЧАСЫ МЕНЬШЕ 9, ТО...
var HH:String = "0" + Hours; //СТАВИМ ПЕРЕД ЧАСАМИ 0;
} else { //ИНАЧЕ...
var HH:String = "" + Hours; //НЕ СТАВИМ 0;
}
TIMER_TEXT.text = HH + ":" + MM + ":" + SS; //ВЫВОДИМ ЧАСЫ, МИНУТЫ И СЕКУНДЫ В ТЕКСТОВОЕ ПОЛЕ;
} else { //ИНАЧЕ...
_root.gotoAndStop(5); //СКРЫВАЕМ ТАЙМЕР;
 
 
 
}
}
var IntervalID=setInterval(TIMER, 1000); //ФУНКЦИЯ ТАЙМЕРА БУДЕТ ОБНОВЛЯТЬСЯ С ИНТЕРВАЛОМ В 1000 МИЛИСЕКУНД.

Я пытался преназначить значения времени и счета на кнопке "сыграть снвова" таким вот образом:

Код AS1/AS2:
on(press) {
	score=1000;
Seconds = 10;
Minutes = 00;
Hours = 00;
	score=1000;
Seconds = 10;
Minutes = 00;
Hours = 00;
	score=1000;
Seconds = 10;
Minutes = 00;
Hours = 00;
	_root.gotoAndStop(cur_lvl);
}

Не пойму блин в чем дело...