Просмотр полной версии : что такое Proxy ?
После прочтения информации в справке о классе Proxy, окончательно запутался... Почему его не надо создавать? какое такое новое пространство flash_proxy ? как он обращается к методам объекта в котором его используют? нельзя ли добавлять своих медотов? Вобщем что это такое и с чем его едят. И ещё. Допустим у меня есть объект в котором когда что-то поменялось должно что-то произойти. Кокой механизм наиболее рационально применять в таком случае? Proxy? или имеет смысл создавать функцию установки атрибута и вместо object.x=15, писать к примеру object.setAttribute ('x', '15')
а setAttribute в свою очередь вызывает функцию обновления-перестройки
function setAttribute(vari:String, value:String):void{
this[vari] = value;
constract()
}
З.Ы. юзаю последнее, но не очень удобно
Класс прокси нельзя создавать, потому что сам по себе он ничего не делает, его нужно расширять, его использование оправданно при использовании динамических классов.
Класс прокси нельзя создавать, потому что сам по себе он ничего не делает, его нужно расширять, его использование оправданно при использовании динамических классов. Так, ставлю вопрос по другому. у DisplayObject есть свойство width. когда мы меняем его значение в объекте вызываются какие-то функции после чего объект делает что нужно, в данном случае изменяет свои линейные размеры. Так вот хочу делать свойства, при изменении которых вызывались бы какие-нибудь функции. В предыдущих версиях в этом немного помогал метод watch. А в AS 3 я не знаю как решить такую задачу. Ничего не могу пидумать, кроме как самому написать аналоги функции setProperty. Можно написать к примеру,
setAttribute(name, value){
//чё-то происходит, например изменяется ширина мувика
}
Есть ли какой-нибудь способ позволяющий просто писать
obj.variable = value
и что бы после этого что-то происходило в объекте obj ?
почему бы не сделать так
override public function set width ( value:Number ):void
{
dispatchEvent(new SomeEventClass("resize"));
}
после чего подписывай сколько надо слушателей
или можно воспользоваться классом ObjectProxy из библиотеки mx.* ( вроде mx.utils но не уверен )
redbaron
22.08.2006, 14:38
Есть ли какой-нибудь способ позволяющий просто писать
obj.variable = value
и что бы после этого что-то происходило в объекте obj ?
более прямой ответ
override public function set width ( value:Number ):void
{
//dispatchEvent(new SomeEventClass("resize"));
super.width=value;
делать что-то
}
имхо:
не стоит перебарщивать с событийной моделью,
особенно если асинхронность не нужна
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.