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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.06.2008, 15:59
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию ХML: Запретить создавать любые аттрибуты, кроме нужных?

Поскольку наследовать от ХМЛя низзя (но иногда очень бы хотелось... =) Возникает вопрос, как можно было бы организовать такую штуку:
Существует под-формат ХМЛя позволяющий только определенные имена тэгов / аттрибутов + регламентирующий, что в этих аттрибутах может быть. Но ради реализации этого формата не хочется придумывать ХМЛ еще раз, а использовать его возможности... С именами элементов проблему решил следующим образом: класс динамический, и когда у него пытаются создать свойство, названия которого нет в списке - выдает ошибку. А вот сделать то же самое с аттрибутами не получается - т.как обращение к аттрибуту типа @attributeName для не ХМЛ/ХМЛЛиста вызовет ошибку...
Есть какие-нибудь идеи по этому поводу?
__________________
Hell is the possibility of sanity

Старый 23.06.2008, 16:53
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 2  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
есть такой паттерн, "обертка" называется, почитай про него, как вариант... )
паттерны
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 24.06.2008, 14:22
ulik вне форума Посмотреть профиль Отправить личное сообщение для ulik Посетить домашнюю страницу ulik Найти все сообщения от ulik
  № 3  
Ответить с цитированием
ulik
 
Аватар для ulik

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
wvxvw я вас не совсем понял... Что-то типа такого вы хотите:

Код:
package
{
	public class LimitedXMLList 
	{
		private var _data:XMLList = new XMLList("<doc><node /></doc>");
		private var supportedNames:Array = [ "id", "login", "password" ];
		private var numNames:int = supportedNames.length;
		private var hasValue:Boolean;
		
		public function LimitedXMLList()
		{
			super();
		}
		
		public function addParam(varName:String, varValue:String):Boolean
		{
			hasValue = false;
			for(var i:int = 0; i<numNames; i++)
			{
				if(supportedNames[i] == varName)
				{
					hasValue = true;
					break;
				}
			}
			if(!hasValue)
			{
				throw new Error("Unsupported varName = '"+varName+"'. Supported names: "+supportedNames, 0);
				return false;
			}
			_data.node..@[varName] = varValue;
			return true;
		}
		
		public function get data():XMLList
		{
			return _data;
		}
	}
}
Код:
import LimitedXMLList;

var myList:LimitedXMLList = new LimitedXMLList();
myList.addParam("id", "659");
myList.addParam("login", "Ivan");
myList.addParam("password", "test");
myList.addParam("someVar", "someValue"); // Error: Unsupported varName = 'someVar'. Supported names: id,login,password
trace(myList.data);
После первых трех add'ов:
Цитата:
<doc>
<node id="659" login="Ivan" password="test"/>
</doc>
__________________
Дизайн, как презерватив - каждому жмет по-своему © Я
мое: блог форум

Старый 24.06.2008, 15:01
vooparker вне форума Посмотреть профиль Отправить личное сообщение для vooparker Посетить домашнюю страницу vooparker Найти все сообщения от vooparker
  № 4  
Ответить с цитированием
vooparker
 
Аватар для vooparker

Регистрация: Apr 2006
Адрес: Kursk, Russia
Сообщений: 523
Отправить сообщение для vooparker с помощью ICQ
Проблема насколько я понимаю заключается в том, что хочется сделать свой тип, который будет поддерживать @ - оператор доступа к атрибуту. ActionScript в нынешней своей версии не позволяет подобно с++ прописывать поведение операторов, честно не знаю как правильно это назвать, так что знающие люди поправьте.

Например, у нас есть класс Vector, одна из возможных операций это складывание векторов. В ActionScript нет возможности использовать конструкцию vector1 + vector2, поскольку + оператор сложения, который можно применять для строк, чисел и тд. Но нет возможности заставить этот оператор правильно сложить два экземпляра класса Vector. Поэтому реализовать данную операции можно только через создание соответствующего метода.

Здесь насколько я понимаю ситуация схожая, есть желание использовать оператор @ для не XML или XMLList объектов. Собственно и реализация может быть только в виде метода.
__________________
Челябинские флешеры настолько суровы, что пишут код во Flash IDE

Старый 24.06.2008, 15:19
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
ulik:
Да, мысль примерно правильная, только так делать очень нееффективно...

vooparker
Угу, в итоге все закончилось написанием своего ХМЛ-подобного класса (вернее группы классов) и использованию $ вместо @.
__________________
Hell is the possibility of sanity

Старый 24.06.2008, 15:36
ulik вне форума Посмотреть профиль Отправить личное сообщение для ulik Посетить домашнюю страницу ulik Найти все сообщения от ulik
  № 6  
Ответить с цитированием
ulik
 
Аватар для ulik

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
wvxvw >> Ну, эт ясно. Я просто, чтоб понять точно о чем речь. А вообще vooparker прав. Жаль, что нельзя...
__________________
Дизайн, как презерватив - каждому жмет по-своему © Я
мое: блог форум

Старый 24.06.2008, 15:55
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 7  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Угу, в итоге все закончилось написанием своего ХМЛ-подобного класса (вернее группы классов) и использованию $ вместо @.
Зачем? Ты же Proxy испульзуешь, обращайся нормально через @, а внутри проверяй что передано через isAttribute.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
если бы... Флеш не воспринимает @ после точки как строку... т.е. я не смогу обнаружить, обращаюсь ли я к аттрибуту или к ноду...
т.е. getProperty() видит customProxy.@attr и customProxy.attr одинаково... (как будто @ там нету)

edited: а, ой, сорри про isAttribute не заметил =) вот млин, а я мучался =)
Млин, даж нинаю, прям обрадовался... а ларчик то просто открывался =)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 24.06.2008 в 20:33.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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