Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2007, 18:50
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 1  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
По умолчанию Аналог функции eval() в php

Всем привет.
Есть задача следующего рода:
с сервера присылается некий текст и служебная информация, в зависимости от которой, текст должен отображаться в разных компонентах (textaria, TextInput, label и т.д.)
Допустим в некоторый момент времени я решу написать ещё какой то свой компонент и захочу чтоб текст отображался в нём. Так вот вопрос, как бы мне сделать так, что бы при этом не надо было перекомпиливать весь проект.

Вот в PHP например есть функция eval(), которая принимает на входе произвольный код и исполняет его. Есть ли что то похожее во флексе?

если нет, то можно ли компилить компоненты в отдельные swf-ники, а потом подключать в основном аппликейшене???

Помогите плиз найти рациональное решение.

Старый 23.02.2007, 03:18
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Написать рантайм компилятор.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 23.02.2007, 09:45
Скрипун вне форума Посмотреть профиль Отправить личное сообщение для Скрипун Найти все сообщения от Скрипун
  № 3  
Ответить с цитированием
Скрипун
 
Аватар для Скрипун

Регистрация: Aug 2005
Сообщений: 687
Записей в блоге: 1
Отправить сообщение для Скрипун с помощью ICQ
ответ нет. eval () тут очень упрощенная и это делать не умеет.
__________________
Flash в крови

Старый 23.02.2007, 21:06
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 4  
Ответить с цитированием
asuri

Регистрация: 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'));
...
пишет ошибку 1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.displayisplayObject.


Последний раз редактировалось asuri; 23.02.2007 в 21:09.
Старый 23.02.2007, 21:08
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Дык, напиши в типе возврата DisplayObject

Старый 23.02.2007, 21:21
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 6  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
а я написал по другому
hBox.addChild(DisplayObject(CreateComponent('TextInput')));
Так не правильно?

Старый 23.02.2007, 21:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А что, написать правильный тип возврата сложнее было? Кастить зачем? Они и так наследуются от DisplayObject, зачем кастить лишний раз…

Только уж тогда
Код:
public function createComponent(componentType:String):DisplayObject {
	switch (componentType) {
                case 'TextInput':
		return new TextInput();
	        break;
                case 'TextArea':
		return new TextArea();
                break;
                case 'RichTextEditor':
		return new RichTextEditor();
                break;
                default:
                return null;
        }
}
з.Ы. С прописной буквы именуются классы, а не методы и переменные.

Старый 23.02.2007, 23:20
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 8  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
гы гы шлабаки, никакоего изврата( настоящий изврат:
Код:
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 коровы

Старый 23.02.2007, 23:22
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну пусть new Shape хотя б…

Старый 23.02.2007, 23:26
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 10  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Не нужно ничего возвращать, перед return надо написть throw new Error('No Such Class');
ибо в mx.core.Contaiener можно дабавлять только IUIComponent(контейнер должен уметь алайнить компоненты, в IUIComponent заложено это) а плодить лишние IUIComponent'ы это издевательство над оперативкой.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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