Существует проблема загрузки внешних файлов в мувиклипы, созданные программным
путем с помощью метода createEmptyMovieClip(). Проблема состоит в
том, что при загрузке внешнего .jpg или .swf файла в программно созданный мувиклип
безвозвратно теряются все свойства, определенные на этом мувиклипе. Мы разберемся,
как решить эту проблему.
Допустим, вам нужно загрузить клип "toload.swf", содержащий дополнительные
элементы дизайна, в ваш основной документ. Клип "toload.swf" должен
быть опубликован в той же папке, что и наш основной документ. Сделайте это, чтобы
дальнейшее исследование стало возможным.
В основном документе мы создадим пустой мувиклип программным путем и определим
на нем обработчик события onData с целью получения событий о загрузке
очередной порции данных из файла "toload.swf" в мувиклип, находящийся
в основном документе:
this.createEmptyMovieClip("placeholder_mc", 9999)
placeholder_mc.onData = function () // определяем на клипе обработчик события
onData
{
trace("произошло событие onData");
}
placeholder_mc.loadMovie("toload.swf"); // загружаем файл
Этот код не будет работать, как ожидается. В окне вывода output не появится
сообщение "произошло событие onData", так как вызов метода placeholder_mc.loadMovie("toload.swf")
приводит к уничтожению всех свойств программно созданного мувиклипа placeholder_mc.
А обработчик события onData также является свойством, и поэтому также
уничтожается.
Выход из этой неприятной ситуации находится в использовании методов Flash 5.
При этом нужно вручную создать мувиклип placeholder_mc и поместить
его на рабочее поле. Итак:
Создайте пустой мувиклип с именем "dummy" (Меню Insert > New Symbol
... или Ctrl+F8). Перейдите в основную сцену и перетащите
символ dummy из библиотеки на рабочее поле. Убедитесь, что экземпляр символа dummy
выбран и присвойте экземпляру имя "placeholder_mc";
Откройте панель Actions. Введите следующий код:
onClipEvent (data)
{
trace("произошло событие onData")
}
В первом кадре основной сцены введите код:
placeholder_mc.loadMovie("toload.swf");
Теперь проверим, как это работает. Нажмите Ctrl+Enter. В окне вывода output
появится ожидаемое сообщение "произошло событие onData".
Как видите, старые методы Flash 5 все еще актуальны. Их использование
не добавит элегантности структуре ваших приложений, но бывают ситуации, когда
нужно жертвовать элегантностью в пользу эффективности.
[новое окно]>