![]() |
импорт мувиклипа из библиотеки по имени массива
День добрый. В АС3 я пока не очень и нужна ваша помошь, дорогие знатоки.
Ситуация такая - есть поверхность на которую я подтягиваю из библиотеки своего героя игры (hero) и дублирую для тестирования коллизий с поверхностью. Код AS3:
_namesArray=["myhero","fish","turbo"]; _xArray=["400","800","1100"]; Теперь я хочу перебирая элементы массива ставить на карту персонажей с соответствующими именами из библиотеки. Но у меня не получаеться :( Делаю так: Код AS3:
Подскажите, что прописать, что бы элемент массива считался мувиклипом и подтягивался из библиотеки. |
getDefinitionByName()
|
я делаю это так:
Код AS3:
|
gashhik, не в коем случаи не делайте так как делает mickfallout.
|
фух мозги уже плавлятся.....
Код AS3:
Код AS3:
|
Код AS3:
|
Спасибо тебе добрый человек!!1 РАБОТАЕТ :-*
|
А что мешало хранить в массиве классы, а не строки с их именами?
|
Цитата:
типа: Код AS3:
|
Не понимаю...
Как вы это видите в коде? Код AS3:
|
Код AS3:
|
да ниче не мешает:)
если знать заранее имена классов но может быть ситуация когда имя класса приходит извне в виде строки.. |
Ну об этом ведь речи не было. Для таких случаев и существует getDefinition, но никак не для
Код AS3:
|
согласен:)
но был рассмотрен и такой вариант, что тоже может быть полезным |
Цитата:
|
mickfallout, всё у вас хорошо. прошу прощения. я сперва не заметил одну строчку. у вас даже самый правильный вариант, и самый быстрый. просто оформлен коряво.
|
Цитата:
|
Цитата:
Добавлено через 1 минуту а, вроде нашёл... вместо //если в хранилище MovieClip'ов под таким именем уже что-то есть надо было написать //если в хранилище MovieClip классов под таким именем уже что-то есть |
написать, что типа этого, было бы логичнее:
Код AS3:
1. static до нэймспэйса. 2. название переменной MovieClipsClassesObject с большой буквы. 3. не понятно почему оно является переменной, а не константой. 4. если приватная, то почему без подчёркивания? 5. объект создаёте через литерал { }, а не через new Object(). советую второй вариант. 6. метод называется newMovieClip а параметром передаётся imageName. 7. с названиями в принципе беда: MovieClipsClassesObject, movieClipsClass. непонятно. 8. в качестве результат возвращается экземпляр MovieClip, что само по себе плохо. а что, если вам нужно будет сделать наследника спрайта? или битмапа? или ещё чего угодно? напишите ещё один такой же метод? 9. возвращаете Вы готовый экземпляр, но опираясь на пункт 7, возникает вопрос: а что если надо будет передать параметр в конструктор класса? 10. непонятно откуда берётся resourceLoader, и почему он один. а если подгружаемых библиотек будет много? на счёт пункта 1 и 4, многие со мной не согласятся. я не очень настаиваю. |
gashhik, это решение предполагает наличие и доступность данных классов. Если это просто имена объектов в библиотеке, я не смогу помочь - не работаю с ИДЕ.
Да, ассоциативный массив был у меня в мыслях тоже)) |
Цитата:
Цитата:
9.В конструктор класса MovieClip ничего передавать не надо. Там где надо(в битмап например) -там передается, там другая функция... 10. Много библиотек не планируется, откуда берется объясняется выше по коду. Приводить не стал, т.к. это выходит за рамки темы топика (обсуждаем как извлечь из библиотеки, а не как загрузить библиотеку) 1,2,3,4,6,7 - Спасибо, исправлю =) Добавлено через 9 минут Цитата:
Код AS3:
Код AS3:
|
5. если Вы будите опираться на эту конвенцию то вскоре встретитесь с проблемами. например у литерала {} не так как у всех работает перебор через for .. in
8. тема топика мувиклипы, только потому, что автор, видимо, перешёл к нас с АС2, в котором ничего другого и нету. к тому же даже гуру по привычки называю всю визуалку "мувиками". тупо привычка из старых времён. 9. ваше право. пишете 10 раз один и тот же рас так нравится =) 10. я уже понял, что Вы любите писать одноразовый код. по поводу того как будет у меня. у меня будет понятно, что происходит, а не создание непонятно чего и не понятно где. к тому же я забыл сказать почему Ваш вариант ещё хуже =) если у Вас в библиотеке не окажется указанного класса, то у вас произойдёт целый каскад ошибок: 1. new movieClipsClass() - Вы не проверяете существование класса. то есть будет ошибка. 2. даже если Вы поставите проверку в пункте 1 и вернёте null, то у Вас всё упадёт на addChild. и ещё новый быдлокод: не используйте для приведение типов конструкции вида MovieClip( object ). это конвертация а не приведение типов. используйте оператор as. в общем как хотите. |
Цитата:
Код AS3:
Цитата:
Цитата:
Цитата:
|
mickfallout, а зачем мне его там проверять? там у меня ошибки не будет. я не создаю экземпляра и уж тем более никуда его не добавляю. просто возвращаю результат.
конвертация и привидение - разные операции. у них разный смысл и разное назначение. желаю удачи. продолжайте пользоваться конвенцией приводящей к ошибкам =) я пользуюсь здравым смыслом, и знанием специфики всего того, что использую. |
BlooDHounD
Подскажи пожалуйста, а чем конвертация отличается от приведения? А еще есть моменты когда надо отходить от конвенции? |
Цитата:
Цитата:
|
Код AS3:
конвертация при возвращает ту же ссылку, только если типы совпадают, иначе она пытается создать объект нового типа на базе нового. если и этого не выходит она выбрасывает ошибку. лично я и не помню, где я в последний раз использовал конвертацию. для преобразования текста в число я использую parseInt и parseFloat. для приведения к строке использую метод toString. для создания XML я всегда пишу new XML(). ну и т.д. то есть убираю посредников. |
Конвертация вроде как шустрее работает.
|
Цитата:
Код AS3:
p.s.: сегодня прямо день перлов про быстродействие =) записать что ли все ... |
По идее приведение должно быть быстрее - при нем не создается новый объект. Возвращается-то либо сам объект, который конвертируем, либо null (который вообще синглтон).
Код AS3:
А это-то как? Код AS3:
|
BlooDHounD, спасибо за тест. А то так влом было писать ).
|
gloomyBrain, мдя ... как раз при конвертации новый объект может создаться. а не наоборот. разберитесь с терминами. и перечитайте топик с начала.
p.s.: и с чего Вы взяли, что null это синглтон? |
Да, написал наоборот =)
А про null - а с чего вы взяли, что это не так? |
ну тогда всё просто: null - неведомый жираф. докажите обратное =)
p.s.: сегодня на форуме день голословных утверждений. |
Код AS3:
|
Код AS3:
|
mickfallout, мысли читаете =)
|
У меня нет разумного объяснения. Может у кого-то оно есть?
|
ну рас нету, то остановимся на моём варианте:
Цитата:
|
Наверное, подливаю масла в огонь. Однако, хочется поставить жирную точку с null.
До сего топика основывался на 4-м посте этой темы. Полагаю, wvxvw основывался на серьезных документах или тестах. И поможет разъяснить ситуацию. |
| Часовой пояс GMT +4, время: 08:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.