Як зробити паузу в actionscript, шаблони сайтів

Розробляючи флеш анімацію, наприклад, при створенні банерів, часто виникає необхідність пригальмувати той чи інший мувікліп на деякий час. Чи не повністю зупинити, а саме призупинити, щоб через встановлений період він автоматично продовжив роботу.

Потрібного ефекту можна домогтися розтиражувавши кадри, але, по-перше, це не зручно, так як таймлайн стає дуже довгим і з ним складно працювати, а по-друге, кожен кадр чогось варта, а при розробці банерів кожен байт на рахунку.

На жаль вбудованої функції Паузи під флеш немає, тому необхідно запрограмувати її самостійно. В принципі нічого складно тут немає. Давайте розглянемо кілька прикладів:

У першому кадрі нашої сцени визначає нашу функцію

MovieClip.prototype.ppause = function () // декларація функції ppause для поточного мувікліпа

this.st = getTimer (); // запам'ятовуємо поточний час - назвемо його «початковим»
this.onEnterFrame = function () // прив'язуємо до події onEnterFrame, виклик функції обробника, яку тут же і визначаємо

if ((getTimer () - this.st)> (timeout * 1000)) // перевіряємо наскільки текщее час більше початкового, і, якщо величина більше заданої глобальної змінної timeout (timeout - глобальна змінна)
this.gotoAndPlay (_currentframe + 1); // переходимо на наступний кадр
delete this.onEnterFrame; // і Обнуляємо (видаляємо) обробник для події onEnterFrame
>

Тепер досить вставити в потрібному кадрі код виклику нашої функції і ми отримаємо ефект паузи:

timeout = 2; // встановлюємо час паузи в секундах
ppause (); // викликаємо нашу функцію і запускаємо «зворотний відлік» часу
stop (); // припиняємо поточний мувікліп

Мені він подобається більше, тим що немає потреби використовувати глобальну змінну

Аналогічно в першому кадрі визначаємо функцію

MovieClip.prototype.ppause = function (seconds) // в параметер seconds визначається час паузи в секундах

this.stop (); // зупиняємо поточний мувікліп
var pause = setInterval (function (mc)

clearInterval (pause); // після того як час паузи минуло й зголосилася ця функція, видаляємо обробник
mc.play (); // запускаємо відтворення кліпу. Використовуємо об'єкт отримується через параметр при виклику функції

Виклик функції setInterval () запускає процес генерації події і виклику заданої функції із заданою періодичністю.

Періодичність задається параметром seconds * 1000. множник * 1000 потрібен для перекладу секунд в мілісекунди.

Ось і все, тепер в потрібному нам кадрі викликаємо нашу функцію і отримуємо паузу на 3 секунди.

Схожі статті