Форум 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=162702)

goodguy 03.08.2011 14:20

Ивент ничего не отслеживает

Wolsh 03.08.2011 14:20

Цитата:

Как отследить изменение текста, не переписывая класса ТекстФилд, если текст изменился из кода?
Ответ вроде как прямо в вопросе? Ведь это Вы изменили текст из кода, почему бы в этом месте, где Вы его меняете, не сообщить об этом куда нужно?

goodguy 03.08.2011 14:22

Что значит не срабатывает? Кто мешает создать класс, расширяющий TextField, переопределить в нем сеттер text и доставлять событие после изменения текста
Код AS3:

dispatchEvent(new Event(Event.CHANGE));

никто не отменял

КорДум 03.08.2011 14:25

Ну так сделайте свой CustomEvent.CHANGE, с параметром object:Object. Без переопределения сеттеров. Делов-то.
См. пост 4

Wolsh 03.08.2011 14:27

Короче ответ - НЕТ, ДисплейОбжекты не диспатчат стандартных событий "мой_внешний_вид_изменился". По той причине, что такое отслеживание не нужно при правильной архитектуре (ибо это ваш код меняет их вид, соответственно вы всегда знаете, когда это происходит) и думаю, жрало бы немало ресурсов, учитывая специфику Флэш – динамически изменяемая, анимированная графика.

Jitakuzu 03.08.2011 14:30

Задача заключается в том, чтобы отлавливать все изменяющие вид объекты. Места, из которых они изменяются, мне не доступны. Я пишу библиотеку, которая будет работать с разными проектами. С помощью AddedToStage я отлавливаю все добавленные на stage объекты и на них надо навесить этот чудо-эвент, который будет срабатывать при их визуальном изменении, записывая это в лог.

Wolsh 03.08.2011 14:35

Советую для начала ознакомиться с понятием Событие и событийной моделью AS3, и конечно классом EventDispatcher. Выражение "навесить этот чудо-евент" говорит о том, что Вы пока неверно себе представляете эту модель.

Bgg 03.08.2011 14:36

Цитата:

Сообщение от Jitakuzu (Сообщение 1017529)
Задача заключается в том, чтобы отлавливать все изменяющие вид объекты. Места, из которых они изменяются, мне не доступны. Я пишу библиотеку, которая будет работать с разными проектами. С помощью AddedToStage я отлавливаю все добавленные на stage объекты и на них надо навесить этот чудо-эвент, который будет срабатывать при их визуальном изменении, записывая это в лог.

Вам уже ответили. Sprite например не шлет подобного события, MovieClip тоже не шлет. Создайте интерфейс ISendEventWhenChange и используйте его со своей библиотекой. В нем должен быть быть метод dispathEventWhenChange.

Wolsh 03.08.2011 14:40

Теоретически можно представить себе например набор декораторов, расширяющих все стандартные ДисплейОбжекты и переопределяющие для них все сеттеры, влияющие на внешний вид, с тем чтобы отправлять чудо-событие)) Не могу сходу представить себе способ создания такого декоратора для собственной графики объекта (то есть если изменение будет происходить через свойство graphics).

Jitakuzu 03.08.2011 14:41

Event.RENDER - думаю это оно.
Bgg,
Попробую, если RENDER не то. Спасибо
Остальным тоже спасибо.


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

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