![]() |
Как создать объект зная имя класса?
На вход метода подаётся строковое название класса, нужно вернуть объект данного класса, как это можно сделать?
|
Если заранее известны предолагаемые классы которые ты можешь вернуть этим методом, то банальный switch:
Код:
function getClassByName(className:String):Object{ |
В Flash 8 есть класс mx.utils.ClassFinder
юзать так Код:
import mx.utils.ClassFinder; |
Цитата:
ну что поделать.. как грится пользуйтесь поиском по хелп ) |
Код:
import mx.utils.ClassFinder; |
Самый короткий метод: добавь объект в стейдж затем удаляй.
Потом пиши - я показываю на примере Button createClassObject(mx.controls.Button, "m_btn",this.getNextHighestDepth())соответственно ты можешь создать и другой объект, например TextInput и т.д. |
Цитата:
|
Первый вариант, который мне пришёл в голову, создать пустой мувиклип в библиотеке, сделать линкейдж на класс, имя будет передаваться в фабрику, а она аттачит класс и возвращает объект. Но это ерунда какая-то, получается для каждого нового класса нужно создавать мувиклип, вообщем это подход через заднее место. Нужно было нечто, типа класса Class в Java, иначе нормальной фабрики не получится.
Вообщем Nirth просто зажёг, за что ему большое спасибо!!! Один вопрос меня терзает фигли разработчики в документацию по 8-ке не включили описание пакета mx.utils ?? |
а чем тебе фабрика не нравится ? зачем клипы отдельные ?
у меня фабрика работает с 50-штк классов и ничего ) а вот то что дал Nirth просто даст мне возможность щаз там нафик убрать гигантский свич ) |
Да нет - свитч, как то мне совсем не нравится. Смотри, допустим стороний разроботчик расширяет систему. Ему проще дать интерфейс, который он должен реализовать и всё. А так ему ещё нужно залезть в свитч и дописать свой класс.
Кстати посмотрите реализацию classFinder. Код:
class mx.utils.ClassFinderДругими словами класс должен засветится во флеше хотябы в составе пакета. |
7thsky™ так и сказал=)
|
А ну да, как-то я пропустил, а класс вкомпиливается mtask'ом ежели fla перекомпиливать лень.
|
| Часовой пояс GMT +4, время: 13:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.