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

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

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

Регистрация: Oct 2007
Адрес: Russia::Tomsk
Сообщений: 11
Отправить сообщение для Elandor с помощью ICQ
По умолчанию Dynamic Class, унаследованный от Proxy

Здравствуйте!

Есть некоторый динамический класс, унаследованный от Proxy, который используется в качестве саморасширяемого хранилища данных.
Код AS3:
package com.elandor.fgrabber
{
	import flash.utils.Proxy;
	import flash.utils.flash_proxy;
 
	use namespace flash_proxy;
 
	public dynamic class DynamicObject extends Proxy
	{
		protected var children:Array;
		public function DynamicObject()
		{
			super();
			children = new Array();
		}
		override flash_proxy function getProperty(name:*):* {
			if (!children.hasOwnProperty(name)){
				children[name] = new DynamicObject();
			}
			return children[name];
		}
		override flash_proxy function setProperty(name:*, value:*):void {
			if(!(value is Function))this.children[name] = value;
		}
		override flash_proxy function deleteProperty(name:*):Boolean{
			return (delete children[name])
		}
		override flash_proxy function hasProperty(name:*):Boolean{return children.hasOwnProperty(name)}
	}
}
Возникла необходимость сохранить структуру (вместе с содержимым) этого динамического объекта. Собственно один из вариантов - при сохранении возвращать привычный Object или XML-дерево, с которыми потом уже можно удобно работать.

Собственно вопрос возникает касательно этого метода:
Код AS3:
override flash_proxy function getProperty(name:*):* {
			if (!children.hasOwnProperty(name)){
				children[name] = new DynamicObject();
			}
			return children[name];
		}
..а именно насчёт входного параметра name. Пробовал работать с ним как со String (например тот же trace(name) ) - возвращает пустую строку, хотя метод hasOwnProperty с name в качестве строки работает "на Ура".

Что я делаю не так? Как можно получить имя, к которому пытаются обратиться в этом классе?

Updated:
В ветку if (!children.hasOwnProperty(name)) не заходит, значит и hasOwnProperty с name работает не так, как предполагалось.

Главное объект отлично работает и превосходно справляется со своими обязанностями. Не могу понять, что делать с этим параметром.


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

Теги
class , Dynamic , getproperty , proxy
Опции темы
Опции просмотра

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

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


 


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


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