![]() |
Изменение свойств фильтра(ов)
Есть некий DisplayObject, на который действует неопределенное количество фильтров.
В какой-то момент необходимо один или несколько из них "обновить", т.к. они поменяли ряд своих значений. Как, если предположительно неизвестно что и как поменялось? Пример кода: Код AS3:
|
Просто заново назначить массив фильтров... Или что именно неизвестно?
Код AS3:
|
Код AS3:
|
Массив-то хранит ссылки на экземпляры фильтров, и когда фильтры меняются, "в массиве" они "тоже меняются". Но дело в том, что когда Вы отдавали массив свойству filters, фильтры применяются один раз как набор эффектов с установками (значениями). Автоматического обновления не происходит, так же как здесь:
Код AS3:
|
Wolsh, да, то что необходимо назначить, - не известно.
Массив - объект ссылочного типа, думал что по сеттеру происходит сравнение массивов. Но нижеприведенный код на результате никак не отразился: Код AS3:
|
А как он должен был отразиться? Если ты скопировал и назначил обратно то же, что и было?
Код AS3:
Цитата:
|
Ну, а в чем проблема то? Нужно обновить фильтры в любой момент времени?
Код AS3:
|
Нужно сначала получить фильтры, обновить их и засеттить заново.
|
Почему бы не переопределить сеттер для фильтров и в нем все это реализовывать?
|
Silicium, отличная мысль!
FilteredSprite.as : Код AS3:
Код AS3:
|
Спасибо:rolleyes:
|
Код AS3:
|
Все гораздо хуже, Артём...
Код AS3:
|
Цитата:
Совет Silicium-а интересен, но предполагается другой уровень абстракции. Код должен работать с тем что дают, а не использовать то, что есть. Возвращаясь к 1му посту, если занести во временную переменную значение mc.filters, затем mc.filters назначить null и потом ему присвоить ранее помещенное во временную переменную значение - результата все равно нет. |
Может, Вам перечитать тему еще раз? Вдумчиво, например.
Добавлено через 8 минут Обратите внимание на два блока кода выше на этой странице. Вдумайтесь в результаты трейса. Поймите, что DisplayObject не хранит ссылки на ваши фильтры в своем свойстве filters. После передачи ваших фильтров объекту вы можете менять их как угодно, можете их вообще удалить – ничего не изменится. А запросив "обратно" массив filters из объекта, Вы получите другой массив со ссылками на другие объекты, о которых Вы вообще ничего не знаете, которых никогда сами не создавали и в которых изменить ничего не могли. |
Цитата:
|
Цитата:
Ну либо как-то научиться запоминать, кому какие фильтры назначали. Почему это невозможно? |
Wolsh, спасибо, что носом ткнул, это бывает очень полезно.
Странное поведение, по ходу действительно там клоны. PS. wrapper-декоратор, отвечающий за фильтрацию, очень может быть. |
| Часовой пояс GMT +4, время: 10:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.