![]() |
|
||||||||||
|
|||||
|
[+5 27.02.11]
[+ 26.04.11] |
Доброго времени муток)Я столкнулся со странной проблемой.У меня на кадру есть 2 динам.поля:поле очков и поле таймера.Как вы можете предположить,время отматывается назад и очки тоже.При достижении определенного условия флешка переходит на кадр с game over.На кадре с гейм овером есть кнопка повторить,которая преводит головку плеера на кадр с уровнем.Проблема:на уровне время начинает мотаться быстрее в 2 раза и очки соответствеено тоже.И так происходит при каждом вылете на гейм овер и поворном начале уровня.Привожу исходник кадра с уровнем:
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 МИЛИСЕКУНД. Я пытался преназначить значения времени и счета на кнопке "сыграть снвова" таким вот образом: 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); } Не пойму блин в чем дело... |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 950
|
нужно очишать интервал.
|
|
|||||
|
[+5 27.02.11]
[+ 26.04.11] |
я пробовал очищать интервалы...ничего не меняется..время после повторной попытки сыграть опять начинает убыстряться
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 950
|
в вашем коне нет ни одного clearInterval, чем же вы тогда их очищаете?
|
|
|||||
|
[+5 27.02.11]
[+ 26.04.11] |
я демонстрирую код уже без них.я добавлял clearInterval в елсе на таймере и не срабатывало(
Добавлено через 4 минуты вот код с очищением интервалов: stop(); cur_lvl=4; Mouse.hide(); _global.score=1000; function scoreminus() { score-=50; } var IntervalID1=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 { //ИНАЧЕ... clearInterval(IntervalID1); clearInterval(IntervalID2); _root.gotoAndStop(5);//кадр с гейм овером } } var IntervalID2=setInterval(TIMER, 1000); //ФУНКЦИЯ ТАЙМЕРА БУДЕТ ОБНОВЛЯТЬСЯ С ИНТЕРВАЛОМ В 1000 МИЛИСЕКУНД. Добавлено через 2 часа 48 минут Понял как сделать.Тема закрыта.(нужно было делать очищение интервалов до их инициализации) Добавлено через 3 часа 11 минут Понял как сделать.Тема закрыта.(нужно было делать очищение интервалов до их инициализации)
__________________
Незнание правил освобождает от ответственности. Последний раз редактировалось temofony; 22.09.2010 в 21:58. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|