![]() |
В AS 3.0 нехватает типов событий.
... Мне так кажется. Основным Display Object'ам для большей абстракции. Я бы хотел, чтобы было событие, например, Event.Movie для того, чтобы объект мог сообразить, что его перемещают. Всё равно кто - parent-объект или пользователь. А, то паренту приходится информировать чилда, что его вот уже 15 кадров по асфальту мордой таскают :). Или например Event.Resize, для того, чтобы сообщить объекту что его размеры изменяются чем то или кем то снаружи. Такие события сделали бы объект более похожим на физические объекты реального мира. Как думаете?
Может это очевидно, да сложности с практической реализацией? А кому, ещё каких событий не хватает? |
Цитата:
|
Код AS3:
|
Ух-ты!!! Thank's! Блин, сам бы не додумался.
Добавлено через 2 минуты Цитата:
|
Можно и свое событие создать, в чем проблема то? Не понимаю как их может не хватать.
Цитата:
Код AS3:
|
Код AS3:
|
Цитата:
|
2goodguy: WeakReference - зло
|
Цитата:
Хотя тут, конечно, можно уже и прямо метод вызывать.... в общем, да, вы правы, это в общем то и не нужно. |
Схема с переопределением сеттеров на свойства x и y не всегда поможет. В частности при использовании startDrag().
|
Цитата:
|
Я воообще-то об этом речь и веду, что при использовании startDrag() перемещение объекта придется отслеживать каким либо альтернативным способом, MOUSE_MOVE например.
А то что при изменении свойств объекта сеттер не срабаттывает никого не смущает? |
Действительно, не срабатывает. Интересно - это баг или фича? :)
|
Цитата:
Сами адобовцы рекомендуют использовать weak refference, что, собственно логично, нет объекта- нет слушателя. + уменьшает вероятность утечек памяти. Цитата:
|
Советует при каждой подписи слушателя?
|
Если бы советовали при каждой подписи, то скорее всего сделали бы параметр true по умолчанию.
Советуют использовать их, если есть вероятность, что разработчик забудет удалить слушатель с объекта, перед удалением самого объекта. В этом случае его удалит сборщик мусора. Но нет ни слова о том, что его не нужно использовать в каких бы то ни было ситуациях, стало быть можно всегда. Лично я использую их всегда и везде уже более полугода, и никаких минусов не обнаружил. Может CrazyFlasher, приведет какой-то весомый аргумент против WeakReference? |
Я бы не стал полагаться на GC...
|
Я тоже на него не полагаюсь. Да и они сами не полагаются, видимо по этому значение по умолчанию все-таки false.
Но почему бы не подстраховаться? Вдруг где-то забудешь удалить слушатель, попрут утечки памяти, которые потом замучаешься отслеживать. |
всё что создал, надо за собой и убрать...это должно войти в привычку...а то получается сыр-бор в коде...для отладки есть profiler.
я просто не вижу в weak reference смысла |
Цитата:
всегда за собой надо подчищать, это аксиома. кстате, на счет weak reference, может кто-то приведет примеры когда оно работает. (это риторический вопрос) А то я видел только для анонимных функций полезность сего. (а сами аноним ф-ю для листенеров -- уже зло) Добавлю: не так написал, конечно, когда ссылок нету и реально GC работает, то weak reference оно подчищается. Только вот в реальном проекте это далеко не очевидно когда произойдет, т.к. GC не управляемый (не считая дебаг режим). И лучше всего removeEventListener не забывать делать, а не полагаться на сборку мусора. |
Цитата:
|
Цитата:
|
кстати насчёт вызова GC есть штуки (которые я не советую юзать)...до 10-го плеера можно было написать:
Код AS3:
Код AS3:
|
Цитата:
где аргументация? |
Цитата:
Профайлер, кстати, тоже не панацея, логика объекта может быть разной, и поэтому в большинстве случаев все удаляется, и разработчик на этому успокаивается, но в может быть и другой расклад событий, который разработчик не учел и поэтому не отследил его в профайлере. |
ну 1-ый способ не задокументированный...это скорее хак. И никто вам не гарантирует, что он будет работать в новых версиях плеера.
2-ой способ создан для того, чтобы вызывать GC после unloadAndStop. Соответственно Код AS3:
Т.к. нет нормального способа, а System.gc() работает только в debug плеере, значит есть на то причины |
Где-то на гарбажколлекторе есть убедительная статья - почему не надо юзать викреференсы.
|
Цитата:
|
Там уже ничего нет, сайт дохлый http://www.garbagecollector.com/
а вот Грант Скиннер как раз рекомендует их использовать http://gskinner.com/blog/archives/20...akly_refe.html |
Цитата:
|
"This is why weakly referenced event listeners are so handy in AS3 – if you forget to remove the listener, you will not impede the Garbage Collector’s ability to collect the object... " Грант Скиннер
Как то звучит... незнаю. А если вы утром штаны забудете одеть? С другой стороны, эта фраза говорит ещё и о неуверенности, что на слабую ссылку можно положиться и уже не обращать внимание на "подтирание" за собой (прошу прощения за вульгарность, но это ведь так и есть :)). Получается не очень убедительно. А слабая ссылка, всё таки, действительно работает надёжно? Или, действительно, ненадежно? Добавлено через 14 минут Мук пишет, что GC "по своему усмотрению" удалит объект на который подписались со слабой ссылкой. То есть если решение об удалении не будет принято, то он-объект будет всё так же диспатчить, например, события, хотя других ссылок на него уже может и не быть. И не рекомендует их использовать. Мук, может быть не для всех "икона стиля" , и не конечная инстанция, но всё таки еще одно авторитетное "против". |
Раздули из мухи слона.
Кто мешает удалять все слушатели самостоятельно, и при этом каждый слушатель делать слабой ссылкой? Цитата:
Цитата:
|
Цитата:
"Из этого следует, что вообще не следует полагаться на параметр исполь - зоватьСлабуюСсылку как на способ автоматического удаления приемников событий. Наилучшее решение — просто избегать появления заброшенных приемников событий." Это что? Мнение "За"? Конечно, это совет, а как иначе, он ведь не начальник нам. Что по поводу мухи, то в кодинге "мух" не бывает, или они кажутся мухами до поры до времени... Добавлено через 22 минуты Цитата:
|
Цитата:
Как-будто кто-то кого-то заставляет использовать слабые ссылки. Все началось с того, что КрейзиФлешер назвал их злом, каковым они не являются. Для меня лично самое авторитетное мнение такое: "я их использую всегда, потому что мне так хочется" :D И пофиг другие мнения Цитата:
|
да, я, собственно, и хотел то сказать, что есть мнения негативные относительно их использования, не знаю,
чо это вдруг битва завязалась :) |
Цитата:
http://riapriority.com/blogs/slon-vs...15/profiling-2 UPD вру. я имел в виду что-то другое. найти не могу. |
Котяра, что в этой статье авторитетного? И тем более, где там убедительные аргументы против их использования?
Есть такая строчка: Цитата:
|
Знаете, на мой взгляд, слабая ссылка походит на ненадежную страховку для раззявы-альпиниста. Ни тому, ни другому не место на стене...
Не использовал, и не использую, но не зарекаюсь... Может встретится такая ситуация когда это будет оправдано. П.С. Не для холивара написал, просто такое у меня сложилось мнение. Не горячитесь. Добавлено через 1 час 21 минуту CrazyFlasher. Хотел спросить... Вот такой способ диспатча, это вообще насколько, как бы это сказать... валидный, что ли способ? Или это для применения в своих "домашних" проектах? Под Гаагский трибунал, потом, не отдадут коллеги-программисты? :) |
ну лучше сделать свой Event который будет расширять базовый. Сделать константы типов свобытий, чтоб всё красиво выглядело
|
А, ну понятно. Спасибо!
|
| Часовой пояс GMT +4, время: 01:11. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.