2009-08-27 2 views
2

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

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

Спасибо, Шри

ответ

2

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

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

3

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

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

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