Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите разобраться с погрузкой объектов из swc (http://www.flasher.ru/forum/showthread.php?t=165272)

vorodis2 21.08.2011 14:46

Помогите разобраться с погрузкой объектов из swc
 
Вложений: 1
Вообщем хочу сделать галерею из классов swc, тобиш в библиотеки имеются: картинки с определенными именами типа pic_0_0, pic_0_1 и pic_1_0 и т д, далее при загрузке основного приложения я проверяю pic_0_0 если существует то наполняем галереи где pic_0,1,2.. это чекбокс доступных галерей библиотеки, а pic_0_0,1,2,3.. сама галерея.
Тобиш нужна функция что то типа:

/// Это рабочая функция, но ручками переписывать все классы из swc лень))
var mov:*=novaObj("movi1");
function novaObj(str:String):*{
if(str=="movi1")return movi1();
return null;
}
///А нужно
function novaObj(str:String):*{
if(Есть ли такой класс с текстовым именем str в библиотеки swc??)return отдаем класс с именем str??;
return null;
}
Знаю что есть
getDefinitionByName("Pic_0_0")// но увы не работает, с swc, возможно нужно писать "flash.display.Pic_0_0" но точно не знаю как должна выглядеть строчка.
Помогите.
Скидываю архив в папке lib есть bazGraf.swc в нем два примитива Pic_0_0, Pic_0_1, в классе Glaf.as все мои тыкания по этому поводу.))
http://www.flasher.ru/forum/attachme...1&d=1313919949

i.o. 21.08.2011 14:47

Воспользуйтесь тегами оформления

silin 21.08.2011 17:48

getDefinitionByName в этом раскладе не работает, потому что swc подключена как library( включаются только классы, на которые есть ссылки)
если подключить(options.. по правой кнопке на swc) как include-library (включаются все классы), то все будет
Код AS3:

private function getObjByClassName(value:String):Object
{
        try
        {
                return new (getDefinitionByName(value) as Class)();
        }
        catch (err:Error){}
        return null;
}


cleptoman 21.08.2011 19:39

http://www.free-lance.ru/blogs/view.php?tr=654745&b=all
что-то мне это напоминает )

vorodis2 21.08.2011 23:34

//cleptoman я на этом форуме одно слово подправил)) Больше вариантов решения.
Решил брать инфу из swf, а уже ближе к релизу переписать все нужные классы.
Собственно как это делать, авось кому пригодиться))
Код AS3:

var ldr:Loader= new Loader();
                        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,skinHandler);
                        ldr.load(new URLRequest("bazGraf.swf"));
                        function skinHandler(evnt:Event):void {                                       
                                trace(loaderInfo.applicationDomain.hasDefinition("Pic_0_0"));//Существует
                                trace(loaderInfo.applicationDomain.hasDefinition("Pic_0_2"));//Отсутствует в либе
                                var loaderInfo:LoaderInfo = evnt.target as LoaderInfo;                               
                                var motoFontInfoClass:Class = loaderInfo.applicationDomain.getDefinition("Pic_0_0") as Class;
                                var instance:Object = new motoFontInfoClass();
                                addChild(instance);
                        }

silin /*если подключить(options.. по правой кнопке на swc) как include-library (включаются все классы)*/
Я не совсем понял, как это сделать?

silin 21.08.2011 23:39

после того как поставишь для swc галку add to library, кликни на нем правой кнопкой еще раз - увидишь пункт options, там поставь как надо

vorodis2 22.08.2011 00:03

Разобрался, пять минут в cs5 тыкал по экспорт в swc))).
Смог выдрать из swc нужную инфу
Но я так и не понял как можно глянуть а существует ли класс с именем "pic_not_v_swc" в библиотеки swc, все попутки проверить несуществующий класс приводят к вылету флеша((

silin 22.08.2011 00:13

упс, я про FD, в архиве же FD-шный проект, не?
к слову, FD содержимое swc показывает
по cs5 не могу сказать, нету


Часовой пояс GMT +4, время: 03:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.