Лого Флэша Потрошителя
 
Новости · Статьи · Прототипы · Компоненты · Персоналии · Глоссарий · Идеальный клип · Что делать  
Как остановить Flash
06.11.2002 06.11.2002

Ralf Bokelberg однажды спросил в конференции FlashCoders: как быстро остановить выполнение кода в Flash Player? Ответов последовало большое множество, но методы Питера Холла [Peter Hall] кажутся наиболее оптимальными:

1. Одной строкой:

((a={}).__proto__=a).a;

Применение этого метода приводит к образованию бесконечной цепочки прототипов (она бесконечна, поскольку замкнута в кольцо), и, вследствие того, что Flash Player распознает такие ситуации, выполнение скрипта останавливается и в окне output выдается сообщение:

256 levels of prototype chain were exceeded.
This is probably a circular prototype chain.
Further execution of actions has been disabled in this movie.

То есть: проигрыватель понимает, что цепочка прототипов состоит из более чем 256 уровней, делает предположение, что эта цепочка замкнута, и прекращает выполнение кода в клипе.

2. Две строки, но меньше символов:

Такой метод основан на том же принципе, что и предыдущий — это использование зацикливаний, мгновенно распознаваемых проигрывателем (в отличие от конструкций типа while(true), на определение зациклености которых проигрывателю требуется 15 секунд).

function f(){f()};
f();

Этот код выводит в окно output:

256 levels of recursion were exceeded in one action list.
This is probably an infinite loop.
Further execution of actions has been disabled in this movie.

То есть: проигрыватель понимает, что образовалось более 256 уровней рекурсии (функция вызывает сама себя), делает предположение, что этот цикл бесконечен, и прекращает выполнение кода в клипе, как и с предыдущем примере.

Может быть, есть лучшие способы? while(true) не предлагать, потому что.

Комментарии

Дэдлайн

 

Примечания:
Нет примечаний

Статус документа
: в процессе
>>> Статьи · Прототипы · Компоненты · Персоналии · Глоссарий · Что делатьНаверх
  © Разработка: Ростислав Сирык · О проекте "Флэш Потрошитель" · Архивы сайта
Flash MX

Стандарты Actionscript

Внутренняя архитектура Actionscript

Атрибуты тэгов OBJECT и EMBED

Метод LoadVars.decode

Свойство Stage.showMenu

System.security.allowDomain

System.showSettings

Динамическое присоединение компонентов

onKeyDown против onClipEvent(keyDown)

Модель событий Flash MX

ASBroadcaster — ядро модели событий Flash MX

Чтение ID3-тэгов из файла .mp3

ASSetPropFlags — функция защиты свойств объектов

Объект Local SharedObject

Удаление Local SharedObject

Глобальный путь к классам

Level против root

Dreamweaver

Создаем расширение для Dreamweaver MX

Настройка Dreamweaver MX

Длинное тире, короткое тире, дефис. Правописание и Dreamweaver

Illustrator

Растеризация текста
FlexiPedia