Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   Хорошее MVC (http://www.flasher.ru/forum/showthread.php?t=138349)

Котяра 13.04.2010 18:17

При работе с партиклями, да и вообще с большим количеством объектов ( при z-сортировке например) mvc тоже не применяю - очень накладно. Лучше контроллером явно менять параметры видов.
Древовиная модель:
в твоем примере имеем что-то вроде:
Код AS3:

model {cameraModel{angleData,x,y},charModel1{data},charModel2{data}..,}

инициализация и подписка
Код AS3:

charView1.model = model
// тут уже можно по-разному организовать
model.addEventListener("Обновление_cameraModel",func);
model.addEventListener("Обновление_cameraModel_angleData",func);
model.cameraModel.addEventListener("Обновление__angleData",func);
 
model.charModel1.addEventListener("Обновление_data",func);
model.addEventListener("Обновление_charModel1_data",func);

события, соответственно, должны всплывать.

Psycho Tiger 13.04.2010 18:51

А зачем событиям всплывать?

etc 13.04.2010 19:25

Цитата:

Сообщение от Psycho Tiger (Сообщение 900259)
А зачем событиям всплывать?

Для удобства.
Вообще, под древовидной моделью я имел в виду не просто ссылки у родителя, а именно список детей и методы, схожие с методами DisplayObjectContainer.

Psycho Tiger 13.04.2010 19:52

Цитата:

Для удобства.
Гм, ну понятное дело что не в ущерб )
Я к тому что если есть подписка, например
Код AS3:

model.cameraModel.addEventListener("Обновление__angleData",func);

То зачем событию всплывать, чтобы его можно было поймать через
Код AS3:

model.addEventListener("Обновление__angleData",func);

Или я опять не о том?
Цитата:

Вообще, под древовидной моделью я имел в виду не просто ссылки у родителя, а именно список детей и методы, схожие с методами DisplayObjectContainer.
Гм, а я подумал о том, что предложил Котяра. Можно пример абстрактный тогда?

etc 13.04.2010 21:21

Цитата:

Сообщение от Psycho Tiger (Сообщение 900276)
Можно пример абстрактный тогда?

Код AS3:

var container:DataContainer = new DataContainer();
var data:Data = new Data();
container.addChild(data);
container.addChild(new MegaData());
container.addChild(new ItemData());


Psycho Tiger 13.04.2010 21:55

Да, это я понял, я немного о другом спрашиваю.
Ну вот отталкиваясь от примера, что ты мне написал:
Код AS3:

container.getDataAt(0)

В чем плюсы перед обычным объектом?
Код AS3:

var obj:Object={megaData: new MegaData()};

И почему была принята политика называть методы схоже с DisplayObjectContainer`ом?

etc 13.04.2010 22:06

Чтобы обеспечить зеркальность структуры вьюверов и модели.

Psycho Tiger 13.04.2010 22:14

Хм..
То есть примерно для таких нужд?
Код AS3:

var mc:SomeMovieClip=new SomeMovieClip();
mc.addChild(new OtherMovie());
(mc.getChildAt(0) as OtherMovie).model=bigModel.getModelAt(0);

Если да, то в голове пока что не укладывается удобство от такого "удобства".

etc 13.04.2010 22:21

Нет, имеется ввиду, что, например, вместе с событием REMOVED элемента модели удалится и вьювер, отображающий данный элемент. К примеру, в обычном List.

Psycho Tiger 13.04.2010 22:56

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


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

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