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

switcher! 11.06.2010 18:25

Не, не напомню )) Это много тем, преимущественно как-то связанных с MVC. Последняя, если не ошибаюсь, с Психо Тигром и т.д, и т.п.

В основном информация собиралась по крупицам, но где-то и крупными кусками. Как в случае, когда etc разоткровенничался и до кучи нарисовал схемку работы таймзировского MVC. Это где вы (редиска нехорошая :D) потерли свой пост с крайне ценной информацией. Почитал вечером, на груженую голову, ничего не запомнил. Утром встал, а на флэшере меня уже ждал большой такой, толстый облом. :)
+ тема, где вы с "ромастым" холиварили на тему связи модели и вьюшки
+ где блудхаунд доказывал вам, что модельки делать через дисплейобджекты - это зло.
+ да много разных тем...

Я с трудом вспоминаю, просто запомнил, что нужно и делов :)

Psycho Tiger 11.06.2010 20:21

Димарик, ты сказал что модель наследуешь от диспллей обджектов. Модель в парадигме MVC? Зачем? Ради иерархии?

И вот ещё интересно сказал - клонируется если target!=null. Ты имел ввиду, что есть хотя бы один слушатель? target хранит ссылку на объект, где произошло событие - просто если событие произошло, то target не может быть null. Момент неясен.

dimarik 11.06.2010 21:43

Тигра,
1) да, ради ее иерархии и event flow

2) Вот мои размышления. Они касаются кастомных диспатчей, когда наш код самостоятельно вызывает метод EventDispatcher#dispatchEvent. Потому что системная диспетчеризация события не пользует метод dispatchEvent. По крайней мере, Event.ADDED, на котором я проверял.
Код AS3:

addEventListener('type', this.handler);
 
var eventOut:Event = new Event('type');
trace(eventOut.target); // null
dispatchEvent(eventOut); //1-й диспатч. клонирования нет, распространится этот объект как есть
trace(eventOut.target); // [object MainTimeline]
dispatchEvent(eventOut); // 2-ой диспатч. в слушатель уйдет клон этого событийного объекта
 
function handler(eventIn:Event):void {
    trace(eventOut == eventIn); // 1-й раз - true, 2-ой раз false
}

Собственно, второй раз мы попытались задиспатчить событие с установленным target. Оно склонировалось.

Psycho Tiger 11.06.2010 22:32

1) Ну не знаю. Наверное, было бы не очень удобно оперировать дисплей обджектами в модели, но судить не могу. Я все ещё не понял прелестей иерархической модели.
Разве что, например, если делать Флеш Иде - то есть модель таймлайна, у которой есть вектор с моделями всех слоёв и вектор с моделями всех линий таймлайна. Но хватает вполне паттерна компоновщика или функционального дизайна. Не очень понимаю, при каких обстоятельствах сейчас мне может потребоваться больше. Наверное, придёт с ростом.

2) А, в этом смысле. Да, такой тест проводил, об этом знаю. Не так тебя понял тебя просто :)

dimarik 12.06.2010 22:04

Мне нравится иерархическая архитектура дисплей-листа FP. И не мне одному. Дениске и Блудхаунду тоже. Они решили, что их модель тоже будет иерархической. Я лишь заменил Data и DataContainer на Shape и Sprite. Во-первых и последних - это дает преимущество по скорости обработки event flow и удалении/добавлении детей. По расходу памяти проигрываем в полтора раза. Мой посыл был таким - все нативное работает в разы шустрее.

P.S. А чем отличается Composite от дисплей-листа FP? По мне так FP реализует именно его.


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

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