Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как отслеживать изменения свойства? (http://www.flasher.ru/forum/showthread.php?t=140234)

orcpochta 24.05.2010 13:59

Как отслеживать изменения свойства?
 
Предположим, я хочу отслеживать изменения ширины или высоты спрайта, как это можно сделать?

Подход с проверкой по таймеру не предлагать)))
Повесить сеттеры - тоже не то, т.к. будут отслеживаться только изменения, произведенные вручную, например width = 10, а автоматические не будут (например, когда мы в спрайт будем добавлять какое-то содержимое, его размеры могут меняться - при этом сеттер не будет этого улавливать).

Копать в сторону Proxy?

F1esk 24.05.2010 14:03

Код AS3:

override public function addChild


orcpochta 24.05.2010 14:07

давайте без частностей))) спрайты я привел лишь в пример, да и то вы неудачный способ предложили, т.к. при добавлении нового ребенка размеры не обязательно должны меняться, опять же, этот способ не следит за изменениями размеров, когда дети двигаются

Волгоградец 24.05.2010 14:15

watch() или байдинг флексовый (не знаю watch() - это flex framework?).

Upd.: да, это flex framework.

orcpochta 24.05.2010 14:18

watch вроде как удалили из AS3? и в ас2 на сколько я помню он позволял отслеживать только динамические св-ва объектов - нет?

enepx 24.05.2010 14:25

Мне кажется надо просто перегрузить сеттеры width и height, по-моему внутреннее изменение размеров идет именно через них.
Или я не прав?

F1esk 24.05.2010 14:32

Цитата:

Сообщение от orcpochta (Сообщение 910545)
давайте без частностей))) спрайты я привел лишь в пример

addChild - метод DisplayObjectContainer

Цитата:

Сообщение от orcpochta (Сообщение 910545)
когда мы в спрайт будем добавлять какое-то содержимое, его размеры могут меняться

Цитата:

Сообщение от orcpochta (Сообщение 910545)
да и то вы неудачный способ предложили, т.к. при добавлении нового ребенка размеры не обязательно должны меняться

что это? dispatchEvent нельзя обернуть в необходимое условие?

Цитата:

Сообщение от orcpochta (Сообщение 910545)
опять же, этот способ не следит за изменениями размеров, когда дети двигаются

для того, чтобы что-то увидеть, нужно смотреть/слушать :)

orcpochta 24.05.2010 14:37

Цитата:

Сообщение от enepx (Сообщение 910549)
Мне кажется надо просто перегрузить сеттеры width и height, по-моему внутреннее изменение размеров идет именно через них.
Или я не прав?

в первом посте я написал, что это не поможет - изменения размеров по сути не происходит, когда мы что-то добавляем или двигаем в контейнере, т.е. при этом не выполняется например никакого width = 10.

enepx 24.05.2010 14:42

Цитата:

Сообщение от orcpochta (Сообщение 910553)
в первом посте я написал, что это не поможет - изменения размеров по сути не происходит, когда мы что-то добавляем или двигаем в контейнере, т.е. при этом не выполняется например никакого width = 10.

Я читал Ваш первый пост. Вы точно проверяли, что при изменении внутренних детей спрайта у него не вызываются сеттеры width и height? Как-то же width и height меняются у спрайта.

orcpochta 24.05.2010 14:47

width и height - это на самом деле функции))) геттеры и сеттеры

вы к ним обращаетесь за значениями или устанавливаете значения через них
когда вы в контейнере двигаете детей друг от друга - размеры контейнера увеличиваются, но обращений вроде "width = что-то" не происходит

контейнер на самом деле может вообще не иметь во внутренней реализации свойства width
когда вы обращаетесь к его внешнему свойству width (геттеры-сеттеры), он может просто по каким-то своим соображениям перерассчитывать свой размер и выдавать результат

отсюда я могу сделать вывод, что моя задача не выполнима кроме как вешать на таймер проверку свойства (в частности размеров)(((


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

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