Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как добавить клип из библиотеки с динамическим именем? (http://www.flasher.ru/forum/showthread.php?t=140947)

Dragon rideR 11.06.2010 13:54

как добавить клип из библиотеки с динамическим именем?
 
Подскажите как добавить клип из библиотеки с динамическим именем?
Т.е. у меня в библиотеке есть клипы road1, road2 .. roadN
И в коде есть перемененная М которая указывает какой клип добавить из библиотеки, в ас2 я бы создал ссылку таким образом, ['road'+M]
Как это сделать в ас3? :umnik2:

КорДум 11.06.2010 13:59

Код AS3:

var arrClips:Array = new Array(Road1, Road2,..., RoadN);
var m:uint = 1;
new arrClips[m](); // === new Road2()

Классы принято писать с большой буквы.

dimarik 11.06.2010 14:08

Код AS3:

var c:Class = getDefinitionByName("road"+M) as Class;
var o:MovieClip = new c() as MovieClip;


Dragon rideR 11.06.2010 15:07

что то не работает
Код AS3:

var road4:main.Road4;
var roadAr:Array=new Array(road4);
var l = new roadAr[0]();

ошибка
TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.

КорДум 11.06.2010 15:09

Кхм, лучше используйте способ у dimarik...
В вашем коде непонятно, что есть main.Road4 и зачем создается массив для одного элемента. Наверняка еще и в кадрах все пишется.

KIVagant 11.06.2010 16:01

А что скажете насчет следующего участка (нарыл тут)?:

Код AS3:

// Создавайте собственные reflection-методы вместо использования getDefinitionByName(getQualifiedClassName(object)) utils reflection
// 503мс
var someclass:Class = getDefinitionByName(getQualifiedClassName(someObject));
 
// getter reflection вместо кода выше
public class SomeClass {
public function get reflect():Class {
 return SomeClass;
}
}
 
// 9мс
var someclass:Class = object.reflect();
 
быстрее на 5489%

Кстати, там ещё много советов по оптимизации кода.

Сайлас 11.06.2010 16:08

Цитата:

Сообщение от Dragon rideR (Сообщение 914741)
что то не работает
Код AS3:

var road4:main.Road4;
var roadAr:Array=new Array(road4);
var l = new roadAr[0]();

ошибка
TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.

А это всетаки будет работать и будет работать быстро, если сделать
Код AS3:

new roadAr[0].constructor;


Dragon rideR 11.06.2010 16:09

Цитата:

Сообщение от КорДум (Сообщение 914743)
Кхм, лучше используйте способ у dimarik...
В вашем коде непонятно, что есть main.Road4 и зачем создается массив для одного элемента. Наверняка еще и в кадрах все пишется.

нет все пишет в классах, 1 элемент в массиве для примера

Сайлас 11.06.2010 16:15

Цитата:

Сообщение от Dragon rideR (Сообщение 914760)
нет все пишет в классах, 1 элемент в массиве для примера

А как я написал работает?

Dragon rideR 11.06.2010 16:26

Цитата:

Сообщение от Сайлас (Сообщение 914761)
А как я написал работает?

нет к сожалению
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
И еще сам класс Road4 я не описывал, там графика только по этому оставил его создание динамическим при компиляции
Код AS3:

var road4:main.Road4;
var roadAr:Array=new Array(road4);
var l= new roadAr[0].constructor;



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

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