PDA

Просмотр полной версии : Приостановка таймера


Dmitrich256
09.01.2013, 18:41
Доброго времени суток!

Помоги пожалуйста: нужно приостановить таймер, когда мышка выходит за пределы 800 пикселей по Х, а когда мышка возвращается - таймер продолжает обратный отсчет.

Вот что я надумал, но .paused и resumed - не работает, подскажите как во флеше эти команды называются.


if (mouseX > 800-30)
{
TimerMouseS1Instance.pause()
Mouse.show()
} else {
TimerMouseS1Instance.resumed()
}

Добавлено через 57 секунд
вот мой таймер обратного отсчета


//таймер обратного отсчета

addTimeMouseS1.addEventListener(MouseEvent.CLICK, addTimeMouseS1111)

var mouseMinutesStage1 = 0
var mouseSecondsStage1 = 0

var TimerMouseS1:Number = 50;
var TimerMouseS1Instance:Timer = new Timer(1000, TimerMouseS1);
TimerMouseS1Instance.addEventListener(TimerEvent.TIMER,TimerMouseS1Handler);
TimerMouseS1Instance.start();

function TimerMouseS1Handler(event:TimerEvent):void
{
mouseMinutesStage1 = Math.floor(TimerMouseS1/60)
mouseSecondsStage1 = TimerMouseS1 - mouseMinutesStage1*60
//trace(keyMinutesStage1)
if (TimerMouseS1 >=60)
{
timer1_txt.text = mouseMinutesStage1 + " хв " + mouseSecondsStage1 + " с"
} else {
timer1_txt.text = mouseSecondsStage1 + " секунд"
}
TimerMouseS1--;
}

iflamberg
09.01.2013, 18:50
стандартный таймер не имеет такого функционала. Но легко нагуглить таймер с реализованной паузой. Вот например (http://blog.fjakobs.com/archives/101).

Dmitrich256
09.01.2013, 18:59
спасибо за ссылку, но я еще новичок на АС3 - подскажите как мне подключить этот класс

заранее благодарен)

iflamberg
09.01.2013, 19:11
Пора значит немного подучиться и разобраться как работать с классами.
Но если тупо в лоб, то как-то так:
1. Скачать ExtendedTimer.as и положить его по пути com/fjakobs/utils относительно классов вашей игры или самого мувика, если вы пишете код в кадрах.
2. Импортировать класс. Добавить "import com.fjakobs.utils.ExtendedTimer;" в начале кода кадра или в классе, где положено.
3. Заменить в коде "new Timer(" на "new ExtendedTimer(".
4. Использовать .pause() чтобы приостановить таймер и .start() чтобы продолжить его работу.

Zebestov
09.01.2013, 19:49
стандартный таймер не имеет такого функционала
Ну как же. Методы stop() и start() реализуют возобновление "стандартного таймера" после паузы.

iflamberg
09.01.2013, 19:55
Да. Только если у тебя стандартный таймер тикает секунды, а ты сделашь stop() за 400 миллисекунд до события, а потом запустишь start() то он "оттикает" секунду заново. Я думал, вопрос именно в этом, нет?

Dmitrich256
09.01.2013, 19:57
спасибо!)

Добавлено через 2 часа 41 минуту
делаю как сказали:
1) сохранил класс под именем ExtendedTimer.as, положил в ту же папку, что и клип
2) добавить import com.fjakobs.utils.ExtendedTimer в начале кода кадра
3) заменил в коде "new Timer" на "new ExtendedTimer"
4) использовал .pause() чтобы приостановить таймер и .start() чтобы продолжить его работу, но выдает ошибку...

Вот:
Имя пакета "@" не отображает местоположение этого файла. Измените имя определения пакета внутри этого файла или переместите файл

Добавлено через 2 часа 42 минуты
помогите пожалуйста

Добавлено через 2 часа 56 минут
это ошибка, которую в классе выдает, а в самой игре вот что пишет:


Не удалось найти определение com.fjakobs.utils:ExtendedTimer


[/QUOTE]
1061: Обращение к возможно неопределенному методу pause через ссылку статического типа flash.utils:Timer
[/QUOTE]