Flash, ActionScript: загрузка ресурсов из внешнего SWF

У нас есть виджет (SWF), который нужно разбить на два SWF. Главный SWF-файл будет содержать всю программную и бизнес-логику, а также загрузит второй SWF-файл, который будет содержать ресурсы, шрифты и т. Д.

У меня ограниченный опыт работы с Flash, но я знаю, что во Flex это можно сделать. В любом случае, здесь мы должны сделать это во Flash CS3. Можно ли будет это сделать во Flash? Если да, то какие шаги нам нужно предпринять?

Спасибо, Шри


person Sri    schedule 27.08.2009    source источник


Ответы (2)


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

В вашем основном fla (с логикой) создайте загрузчик, скажите ему загрузить активы, на Event.INIT используйте активы.

person George Profenza    schedule 27.08.2009

При загрузке ресурсов из внешнего SWF часто бывает полезно создать экземпляры классов, хранящихся во внешнем SWF - например, таким образом часто получают доступ к шрифтам.

При этом вы должны убедиться, что ваш локальный SWF имеет определение этих классов, и простая компиляция обоих SWF-файлов вместе не гарантирует этого. Более конкретно, если SWF зависит от классов в другом, то оба SWF-файла в конечном итоге содержат копии определений классов, и когда вы загружаете внешний SWF-файл во время выполнения, вы получаете ошибки приведения, потому что виртуальная машина не знает, что то же самое Именованный класс во внешнем SWF точно такой же, как у вас.

Чтобы обойти проблему, вам необходимо использовать ApplicationDomain.getDefinition() в загруженном SWF - см. Здесь подробный пример. Помимо подробного примера использования Loader они также показывают, как получить Class объекты из внешнего SWF.

person Guss    schedule 27.08.2009