Как обработать ошибку времени выполнения в AS3 (Ошибка # 1502) - PullRequest
2 голосов
/ 15 ноября 2011

Я хотел бы знать, есть ли способ добавить обработчик ошибок для ошибки времени выполнения # 1502 в AS3.

Пара замечаний:

  • Мне известно, что максимальное время выполнения скрипта может быть задано в опциях публикации.Он принимает значения до 16 бит (0-65535).Таким образом, есть максимум 18 часов.Скрипт не завершается через 60 секунд в контексте, который я использую.

  • Я использую его в приложении, созданном с помощью mProjector.На кнопке, которая открывает диалог браузера файлов, есть прослушиватель событий.Пока браузер открыт, обработчик событий не продолжается.Если максимальное время выполнения скрипта превышено, я получаю # 1502.

  • Если нет способа, я просто установлю этот предел очень высоким.Тем не менее, построение чего-то, что сломается, если вы оставите диалог открытым, как день, не изящно.Этого никогда не произойдет, но все же я подумал, есть ли правильный способ избежать подобных вещей.

Спасибо.

Дополнительная информация:

Сокращенный код:

bttn.addEventListener(MouseEvent.CLICK, browse);
function browse(e:Event) {
    var selectedFilesString:String = mSystem.chooseFiles(chooseFileTitle, initFileName, initFolderName, fileFilter, defaultFileType);
    ...
}

Так что это включает в себя метод mSystem.chooseFiles (), подробно описанный здесь:

http://www.screentime.com/software/flash-projector/docs/AS3-mSys-chooseFiles.htm

Но, как я сказал, яменя интересует, есть ли обработчик ошибок для этой ошибки.Не в том, что может быть причиной, а в том, что не работает или нет, mProjector хорошо реализован или нет и т. Д.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

EDIT

Вы можете перехватить ScriptTimeoutError , но только один раз. Смотрите это сообщение в блоге .

1 голос
/ 15 ноября 2011

У меня были похожие проблемы с упаковкой моего приложения в .EXE с использованием Zinc, где в основном время ожидания скрипта истекло, пока пользователь не запустил событие, которое было бы запущено обратно в скрипт действия.Фактически, это было диалоговое окно подтверждения, вероятно, точно такая же ситуация, с которой вы сталкиваетесь, только с другим внешним интерфейсом / оболочкой.

В последней версии Zinc они пообещали решить этот тип проблемы, но в вашем случае я бы посмотрел и посмотрел, есть ли у mProjector какой-либо асинхронный вызов диалогового окна, который не остановит скрипт действия, или, может быть, даженастройка закрыть диалоговое окно через несколько секунд.

Если нет, то вы либо устанавливаете тайм-аут на что-то смешное, что кажется мне очень грязным, я согласен, но вы оборачиваете его в EXE-файл, который может сделать его, по крайней мере, немного менее грязным, или вы используетесобственные диалоговые окна и держитесь подальше от любых вызовов mProject, которые полностью останавливают ваш скрипт действия.

Я кратко посмотрел здесь, но ничего не показалось, возможно, вы более знакомы: http://www.screentime.com/software/flash-projector/docs

Удачи, если вы найдете лучшее решение, выясните, дайте мне знать, как мне любопытнокак mProject справится с этим по сравнению с цинком.

0 голосов
/ 15 ноября 2011

Вы можете попробовать запустить таймер перед вызовом FileReference.browse(), и если таймер завершится без операции просмотра, завершится вызов FileReference.cancel().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...