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

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

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
По умолчанию Особенности наследования от класса Proxy

Тема навеяна чтением Adobe AIR Bible, в главе 15 (стр. 285) приводится пример класса Config, который является синглтоном, и свойства которого (названия и значения) берутся из XML-файла. Config наследуется от класса flash.utils.Proxy, и в нем переопределяется метод getProperty таким образом:
Код AS3:
                 override flash_proxy function getProperty(name:*):*
		{
			//делает всю магию: создает свойство и придает ему значение из xml
			return xml.property.(@name == String(name)).@value;
		}
Я скопипастил код из книги и он у меня не сработал, создаваемые таким образом свойства выдают ошибку при обращении к ним. Немного подумав, я понял что прокси тут вообще не нужен, и написал свою реализацию этого класса, просто сделав его динамическим. Но остался вопрос к более опытным товарищам - почему не сработал вариант с прокси? Прилагаю проект сделанный в FD, в котором 2 конфигкласса (ConfigProxy - вариант из книги, не работает, ConfigDynamic - мой вариант с динамическим классом, работает). Ну и в догонку еще одни вопрос, возможно заслуживающий отдельной темы, если кто то знает еще способы сборки классов из XML, и варианты полезного применения этого, будет здорово если вы ими поделитесь. Заранее спасибо1
Вложения
Тип файла: rar ConfigTest.rar (15.1 Кб, 39 просмотров)

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Что-то вы не все методы flash_proxy переопределили
Код:
Error: Error #2091: Класс Proxy не поддерживает hasProperty. Он должен быть заменен на подкласс.
	at Error$/throwError()
	at flash.utils::Proxy/http://www.adobe.com/2006/actionscript/flash/proxy::hasProperty()
	at Main/onConfigProxyInit()[C:\Users\ODevyatko\Desktop\MyProjects\Config\ConfigTest\src\Main.as:35]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at ConfigProxy/dispatchEvent()[C:\Users\ODevyatko\Desktop\MyProjects\Config\ConfigTest\src\ConfigProxy.as:90]
	at ConfigProxy/parseXML()[C:\Users\ODevyatko\Desktop\MyProjects\Config\ConfigTest\src\ConfigProxy.as:135]
	at ConfigProxy/onXMLLoadSuccess()[C:\Users\ODevyatko\Desktop\MyProjects\Config\ConfigTest\src\ConfigProxy.as:116]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Эта ошибка выкидывается, если раскомментировать эту строчку (т.е. проверить есть ли такое свойство):
Код AS3:
trace("exampleProperty1" in ConfigProxy.getInstance());
если же просто обратиться к свойствам
Код AS3:
trace("exampleProperty1 -> " + ConfigProxy.getInstance().exampleProperty1);
выкидывается такая ошибка:
Код:
C:\Users\...\Desktop\MyProjects\Config\ConfigTest\src\Main.as(37): col: 61 Error: Access of possibly undefined property exampleProperty1 through a reference with static type ConfigProxy.
trace("exampleProperty1 -> " + ConfigProxy.getInstance().exampleProperty1);
А вообще я подчищенную версию проекта выложил, с переопределением методов Proxy я поигрался вдовль, но заставить заработать этот класс мне так и не удалось

Старый 08.05.2013, 17:08
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
override flash_proxy function getProperty(value:*):*
{
	//делает всю магию: создает свойство и придает ему значение из xml
	return xml.property.(@name == String(value)).@value;
}
Добавлено через 5 минут
И еще
Код AS3:
public dynamic class ConfigProxy extends Proxy ...
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 08.05.2013, 17:31
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 5  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Прикольно, спасибо работает. Но если и там и там dynamic наследоваться от Proxy вообще не имеет смысла.

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

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

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


 


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


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