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

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

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

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

Вот, что имеется в виду: Есть dynamic class Foo. Создаем его инстанс -> var foo = new Foo();
дальше создаем у него свойство таким образом:
foo.someProp = 'abc';
ни __resolve ни addProperty в таком случае не вызывается, а что же тогда вызывается? Как можно узнать, что произошла попытка создать свойство?
__________________
Hell is the possibility of sanity

Старый 18.05.2008, 19:25
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
1. Это действительно так необходимо? Нельзя ли изменить структуру проекта так, чтобы избежать добавления свойств в рантайме?
2. Я бы сделал так: написал бы класс с названием типа PropertyAdder и статическим методом addProperty(instance, property, value) . А при вызове метода делал бы экземпляру класса __resolve или addProperty - как захочется
__________________
4am is time to rock

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
XMLC.prototype.__resolve = function (p) {
	if (!isNaN(p)) {
		return this._childNodes[p];
	} else if (p.charAt(0) == ATTRIBUTE_ACCESSOR) {
		var attr:String = p.slice(1, p.length);
		if(attr.length){
			if (this._attributes[attr] != undefined) {
				return this._attributes[attr];
			} else {
				this._attributes[attr] = '';
				return this._attributes[attr];
			}
		} else {
			return this._attributes;
		}
	} else if(p instanceof String) {
		for (var i:Number = 0; i < this.childNodes.length; i++) {
			if (this._childNodes[i].nodeName == p) {
				return this._childNodes[i];
			}
		}
		this._childNodes.push(new XMLC(p));
		return this._childNodes[this._childNodes.length - 1];
	}
	return undefined;
}
Ну вот кусок кода, чтобы было понятнее зачем мне это нужно =) В двух словах - имитация ХМЛ из АС3 в АС2 =) Т.е. хочется сделать что-то на подобие хml.@attribute = 'abc'.
T.e. если делать так: хml.@['attributeName'] = 'abc'; то работает, но это не красиво =)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 18.05.2008 в 20:06.
Старый 25.05.2008, 17:37
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 4  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Резидентных методов отловить данное событие нет.

Однако можно организовать циклическую проверку на существование свойства в объекте класса, хотя это вариант расточителен.

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

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

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


 


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


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