Как продлить время ожидания по умолчанию во флэш-приложении?
Вопрос
У меня есть приложение, написанное на flash (на самом деле оно написано на Haxe и запускается под SHWX, но здесь это не имеет значения).У меня есть довольно сложная задача, которая потребляет много энергии процессора и иногда выполняется более 15 секунд.Если это произойдет, я получу сообщение об ошибке "Скрипт выполнялся дольше, чем установленный по умолчанию тайм-аут в 15 секунд". и все завершится сбоем.
Я знаю, что могу использовать продолжения, чтобы остановить это, но есть ли способ продлить этот "период ожидания по умолчанию"?Это инструмент разработчика, отзывчивость на самом деле не имеет значения.
Решение
Другой способ - связать swf-мельницапереключите swf-файл на основе -swf-lib и установите там этот тег ScriptLimits, после чего haxe будет использовать его повторно.
Другие советы
в CS3 + вы просто устанавливаете свойство swf "Ограничение по времени скрипта" во время публикации - оно находится на вкладке flash настроек публикации
Когда вы тестируете свое приложение, помните о свойстве scriptTimeLimit .Если инициализация приложения занимает слишком много времени, Flash Player предупреждает пользователей о том, что из-за скрипта Flash Player работает медленно, и предлагает пользователю прервать работу приложения.Если это так, вы можете установить для свойства scriptTimeLimit тега более длительное время, чтобы у приложения Flex было достаточно времени для инициализации.
Тем не менее, значение по умолчанию для свойства scriptTimeLimit равно 60 секундам, что также является максимальным значением, поэтому вы можете увеличить значение только в том случае, если вы ранее установили для него меньшее значение.Вам редко нужно изменить это значение.
Источник: http://livedocs.adobe.com/flex/3/html/help.html?content=performance_05.html
Я не уверен, есть ли что-то более родное для этого, но, похоже, есть команда, которая взламывает SWF-файл для добавления тега ScriptLimits чтобы продлить период ожидания.
Я предлагаю разбить вашу функцию на более мелкие фрагменты и распределить их по нескольким фреймам.Таким образом, вы можете отобразить анимацию прогресса, и приложение Flash не перестанет отвечать на запросы.Так, например, если вам нужно выполнить цикл из 1000 элементов, вы выполняете 100 в одном кадре, затем еще сотню в следующем кадре и т.д., пока не обработаете их все.Я бы не рекомендовал взламывать ваш swf-файл.