swfloader: можно ли перехватить все исключения из загруженного swf? - PullRequest
0 голосов
/ 09 февраля 2010

Я загружаю SWF-файл в другой SWF-файл с помощью swfloader. Я хочу перехватить все исключения, генерируемые внутренним SWF-файлом, это выполнимо?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010

Вот некоторые основы, которые могут помочь. Короче говоря, вы не можете использовать try / catch здесь.

Ошибки при загрузке внешнего контента не могут быть обнаружены с помощью операторов try..catch..finally. Вместо этого вам нужно создать обработчики событий для обработки и «перехвата» ошибок. Если у вас нет прослушивателя событий, назначенного событию ошибки, и эта ошибка возникает, Flash Player сообщит вам о необработанном событии ошибки.

// creating listeners for error events handles
// asynchronous errors
target.addEventListener(ErrorEvent.TYPE, handler);
function handler(event:ErrorEvent):void {
// handle error
}

Если вы хотите вызвать свои собственные асинхронные ошибки, все, что вам нужно сделать, - это отправить событие с помощью dispatchEvent, имеющего тип ErrorEvent. Когда необработанное ErrorEvent достигает Flash-плеера при авторизации во Flash, в окне вывода отобразится ошибка.

target.dispatchEvent(new ErrorEvent(”type”));
1 голос
/ 14 июня 2011

Начиная с Flash 10.1, теперь можно отлавливать все ошибки, генерируемые как основным swf, так и любыми swfs, загруженными внутри него.

Для этого вам нужно прослушать событие UncaughtErrorEvent, отправленное из объекта loaderInfo.uncaughtErrorEvents, например:

loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleUncaughtErrors);

function handleUncaughtErrors(e:UncaughtErrorEvent):void
{
    e.preventDefault();
}

Пожалуйста, используйте с осторожностью, так как это исключит все ошибки, которые будут отображаться в отладочной версии проигрывателя и flashlog.txt.

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