![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2006
Сообщений: 44
|
Всем привет.
Есть задача следующего рода: с сервера присылается некий текст и служебная информация, в зависимости от которой, текст должен отображаться в разных компонентах (textaria, TextInput, label и т.д.) Допустим в некоторый момент времени я решу написать ещё какой то свой компонент и захочу чтоб текст отображался в нём. Так вот вопрос, как бы мне сделать так, что бы при этом не надо было перекомпиливать весь проект. Вот в PHP например есть функция eval(), которая принимает на входе произвольный код и исполняет его. Есть ли что то похожее во флексе? если нет, то можно ли компилить компоненты в отдельные swf-ники, а потом подключать в основном аппликейшене??? Помогите плиз найти рациональное решение. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 44
|
Я решил делать так:передавать типа компонента в функцию, там его создавать , задавать ему всякие свойства и потом уже делать addchild() в какой нить hbox или vbox. Тока у меня опять не всё получается
...
public function CreateComponent(c_type:String):Object{
var Component:Object;
if(c_type=='TextInput'){
Component=new TextInput();
}else if(c_type=='TextArea'){
Component=new TextArea();
}else if(c_type=='RichTextEditor'){
Component=new RichTextEditor();
}
return Component;
}
...
hBox_1.addChild(CreateComponent('TextInput'));
...
isplayObject.Последний раз редактировалось asuri; 23.02.2007 в 21:09. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Дык, напиши в типе возврата DisplayObject
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 44
|
а я написал по другому
hBox.addChild(DisplayObject(CreateComponent('TextInput'))); Так не правильно? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А что, написать правильный тип возврата сложнее было? Кастить зачем? Они и так наследуются от DisplayObject, зачем кастить лишний раз…
Только уж тогда з.Ы. С прописной буквы именуются классы, а не методы и переменные. |
|
|||||
|
гы гы шлабаки, никакоего изврата( настоящий изврат:
private var classes : Object = {'TextInput' : TextInput,
'TextArea' : TextArea }
public function createComponent(componentType:String):DisplayObject
{
if (classes[componentType]!=null)
{
return new classes[componentType]();
}
else
{
//'ТУТ ВСЕРАВНО НЕЛЬЗЯ НУЛ возвращать ) т.к. нул не аттачиться )';
return null;
}
}
__________________
33 коровы |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну пусть new Shape хотя б…
|
|
|||||
|
4AM Games
|
Не нужно ничего возвращать, перед return надо написть throw new Error('No Such Class');
ибо в mx.core.Contaiener можно дабавлять только IUIComponent(контейнер должен уметь алайнить компоненты, в IUIComponent заложено это) а плодить лишние IUIComponent'ы это издевательство над оперативкой.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|