Розробляючи флеш анімацію, наприклад, при створенні банерів, часто виникає необхідність пригальмувати той чи інший мувікліп на деякий час. Чи не повністю зупинити, а саме призупинити, щоб через встановлений період він автоматично продовжив роботу.
Потрібного ефекту можна домогтися розтиражувавши кадри, але, по-перше, це не зручно, так як таймлайн стає дуже довгим і з ним складно працювати, а по-друге, кожен кадр чогось варта, а при розробці банерів кожен байт на рахунку.
На жаль вбудованої функції Паузи під флеш немає, тому необхідно запрограмувати її самостійно. В принципі нічого складно тут немає. Давайте розглянемо кілька прикладів:
У першому кадрі нашої сцени визначає нашу функцію
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 секунди.