Типизированный массив, расширяющийся при необходимости
Всем привет.
У меня есть массив одинаковых объектов, к примеру 10 мувиклипов, а мне нужно разместить на экране 15 таких мувиков из этого массива. Для этого нужно заполнить этот массив ещё 5 объектами этого же типа. Т.е нужно создать такую функцию, которая расширяла бы указанный массив, нужным типом данных ... понятно что можно внутри такой функции реализовать switch в котором будут указаны все типы, но может есть способ поэлегантнее? чтобы при появлении нового класса не надо было добавлять соответсвующий case ? Либо может как-то расширить класс Array или Vector так чтобы его можно было влюбой момент дополнить? Спасибо! |
По-моему в Array и так можно когда и куда угодно добавлять что угодно.
|
вроде есть метод один... getQualifiedClassName... вроде называется.
В параметры принимает объект. Получаете имя класса, потом получаете сам класс: getDefinitionByName Потом создаете экземпляры --- если я правильно понял, что нужно автору |
Цитата:
Код AS1/AS2:
Код AS1/AS2:
Ну или в более простом виде реализовать, типа как-нить так: Код AS1/AS2:
|
Да, вы можете это реализовать с помощью того, что я описал выше.
|
Цитата:
Состряпал тут для наглядности, может ещё кому пригодится: Код AS1/AS2:
|
Если вам, на этапе компиляции, известен класс который необходимо создать, то все эти танцы с
Код AS3:
|
А вам есть разница, писать
Код AS3:
Код AS3:
в первом случае всё намного легче и быстрее, new NeedClass и всё). Для второго советую вместо Код AS3:
Код AS3:
|
Может я что-то не понял, но не лучше ли в таком случае использовать Array?
Зачем тут Vector вообще? По-моему, все преимущества в скорости будут сведены на нет подобной хренью getDefinitionByName(getQualifiedClassName(NeedClass)) |
...тем более, что штатно это делается передачей параметром не имени класса или самого класса, а объекта-фабрики. Что и быстрее и гибче.
Изучаем паттерн Abstract Factory и будет счастье. |
Часовой пояс GMT +4, время: 19:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.