Пока все события отправки видеоклипов добавляются в список отображения, это должно работать. Это заставляет меня думать, что, возможно, добавляемый слушатель событий не работает. Попробуйте добавить оператор трассировки в блок кода, как показано ниже:
if ( swfName.name == 'topNavigation' )
{
trace("adding listener");
swfContent.addEventListener("clickHandle",topNavigationClickHandler);
}
Я ожидаю, что это если условие не выполняется, и, следовательно, ваш слушатель никогда не создается. Кроме того, вам нужно добавить параметр функции в метод обратного вызова «topNavigationClickHandler», чтобы принять событие в качестве параметра обратного вызова. Вы этого не сделали, и это ошибка, которая будет выдана во время выполнения, когда событие получено и отправлено в метод обратного вызова. Вы еще не видели этого, потому что вашему слушателю никогда не приходилось вызывать обратный вызов. Поэтому вам придется исправить этот код так:
private function topNavigationClickHandler(e:Event):void
{
trace('Back to root');
}
Также я просто хочу добавить, что ваше условие if при настройке этого прослушивателя выглядит несколько избыточным, поскольку вы уже знаете, что ожидаете навигационный SWF, поскольку вы явно загружаете его. Также я не верю, что свойство name будет установлено так. Обычно имя задается только в среде IDE перед компиляцией, а если нет, оно генерируется динамически во время выполнения. Что может быть более полезным, так это проверить URL загруженного SWF-файла, чтобы узнать, содержит ли он «topNavigation» или как там его имя. Вы можете сделать это так:
var swfUrl:String = myLoader.contentLoaderInfo.url;
if (swfUrl.search("topNavigation") != -1){
//Match found, add listener for navigation
}