![]() |
[*ОТВЕТ*]Аттач мувика из внешнего swf-файла
Вложений: 1
Это не вопрос, это ответ :) В ActionScript 3.0 появилась возможность, которую очень давно ждали, возможность загрузить произвольный swf-файл и приаттачить в произвольное место мувик из библиотеки (library) этого файла. Возможность-то появилась, вот только метод совсем не очевидный, я провозился больше часа, пока получилось, а в инете нормального примера не нашел. Потому и публикую пример для потомков.
1. Создаем новый flash document под названием "avatars.fla" 2. Создаем в библиотеке новый мквиклип, назовем его "avatar", ставим галочки "Export for ActionScript" и "Export in first frame". Рисуем в мувике что-нибудь жизнеутверждающее :) 3. Компилим нашу библиотеку, получаем avatars.swf. Теперь задача добыть из этого файла мувик "avatar". 4. Создаем новый flash document под уже привычным названием Test.fla 5. Ставим Document class = Test 6. Пишем следующий скрипт Test.as: Код:
package {Одна деталь, так можно аттачить только мувиклипы из AS3, если загруженный .swf файл будет версии AS2 или 1, то ничего не получится. Этот пример в аттаче. |
Ага делал что-то подобное, только без applicationDomain.getDefinition не знал, зачем это и как это работает. Просто писал функцию в корневом классе, которая возвращала ссылку на класс внутри .swf файла.
что-то типа Код:
function (className:String):Class |
Если во flex создать as приложение, то он ругается на эту строчку.
Код:
var a:Class = info.applicationDomain.getDefinition("avatar"); |
Цитата:
|
Использую твой avatar.swf
А во flex выбираю actionscript project |
Цитата:
Тебе нужно объявить класс. Давай исходник avatar |
Я не менял ничего в исходнике, просто хочу чтобы во flex то же самое сработало а когда вставляю код test.as он пишет ошибку про которую уже написал выше. Не понимаю что за класс еще писать надо.
|
Навскидку, а кастить в Class не надо?
|
Внедряем мувики
я делаю это так. допустим есть fla файл в котором все мувики лежат в библиотеке. допустим у меня есть мувик с названием movie1. компилим эту библиотеку.
дальше у меня есть какой нибудь класс под названием class1 наследованный от Sprite. я не хочу использовать Flash 9 так как глючное создание и медленное, поэтому я использую Flex AS Project. но внедрить то муувик из библиотеки мне нужно. ок! берем хелп по AS и находим мета тег Embed.. то что доктор прописал. итог такой: Код:
|
а по поводу getDefinitionByName то работать будет только если у вас уже есть экземпляр класса... это макромедийцы недоглядели...
|
| Часовой пояс GMT +4, время: 09:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.