Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   что такое Proxy ? (http://www.flasher.ru/forum/showthread.php?t=83706)

miramax 12.08.2006 21:50

что такое Proxy ?
 
После прочтения информации в справке о классе Proxy, окончательно запутался... Почему его не надо создавать? какое такое новое пространство flash_proxy ? как он обращается к методам объекта в котором его используют? нельзя ли добавлять своих медотов? Вобщем что это такое и с чем его едят. И ещё. Допустим у меня есть объект в котором когда что-то поменялось должно что-то произойти. Кокой механизм наиболее рационально применять в таком случае? Proxy? или имеет смысл создавать функцию установки атрибута и вместо object.x=15, писать к примеру object.setAttribute ('x', '15')
а setAttribute в свою очередь вызывает функцию обновления-перестройки
Код:

function setAttribute(vari:String, value:String):void{
    this[vari] = value;
    constract()
}

З.Ы. юзаю последнее, но не очень удобно

Nirth 13.08.2006 14:46

Класс прокси нельзя создавать, потому что сам по себе он ничего не делает, его нужно расширять, его использование оправданно при использовании динамических классов.

miramax 13.08.2006 16:37

Цитата:

Сообщение от Nirth
Класс прокси нельзя создавать, потому что сам по себе он ничего не делает, его нужно расширять, его использование оправданно при использовании динамических классов.

Так, ставлю вопрос по другому. у DisplayObject есть свойство width. когда мы меняем его значение в объекте вызываются какие-то функции после чего объект делает что нужно, в данном случае изменяет свои линейные размеры. Так вот хочу делать свойства, при изменении которых вызывались бы какие-нибудь функции. В предыдущих версиях в этом немного помогал метод watch. А в AS 3 я не знаю как решить такую задачу. Ничего не могу пидумать, кроме как самому написать аналоги функции setProperty. Можно написать к примеру,
Код:

setAttribute(name, value){
      //чё-то происходит, например изменяется ширина мувика
}

Есть ли какой-нибудь способ позволяющий просто писать
obj.variable = value
и что бы после этого что-то происходило в объекте obj ?

Nirth 13.08.2006 17:28

почему бы не сделать так
Код:

override public function set width ( value:Number ):void
{
    dispatchEvent(new SomeEventClass("resize"));
}

после чего подписывай сколько надо слушателей

Nirth 13.08.2006 17:33

или можно воспользоваться классом 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;
    делать что-то
}

имхо:
не стоит перебарщивать с событийной моделью,
особенно если асинхронность не нужна


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

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