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

dendead 27.12.2013 18:29

Взаимодействие двух классов представления.
 
Доброго времени суток. Возник такой вопрос... Есть два класса, один из которых представляет героя игры, а именно его отображение:

Код AS3:

public class HeroView extends Sprite {
public function HerowView( ) {
  // код конструктора
}
}

А второй отображает предметы магазине и остальной интерфейс игры:
Код AS3:

public class InterfaceView extends Sprite {
public function InterfaceView( ) {
  // код конструктора
}
}

Так вот, как наиболее простым способом взаимодействовать между этими классами, если они оба являются классами представления.

Можно написать весь код в одном классе, тогда проблем не возникнет, но есть же ещё варианты?

Наверное нужно читать MVC...

Akopalipsis 27.12.2013 18:40

Цитата:

Наверное нужно читать MVC...
Да, при чем не один день.. На форуме посмотрите в разделе "статьи", и поищите поиском по этому разделу "mvc". В последних темах так же есть ссылки на книги. Месяц чтения с утра до ночи Вам обеспечен :)

dendead 27.12.2013 18:55

По книжке Мука имею общее представление о MVC, но сейчас запутался в своём же коде.

shmaser 27.12.2013 19:42

Паттерн Mediator вполне решил бы проблему связывания объектов одного уровня в отношении "многие ко многим".
http://ru.wikipedia.org/wiki/Посредн...роектирования))

Dukobpa3 27.12.2013 20:25

Медиатор, то оно конечно да.
Но только не могу сказать, что герой и магазин - это объекты одного уровня.
Можно чуть больше подробностей? Какие задачи у героя. Что такое герой в данном контексте. Что такое магазин в данном контексте?

Isfet 27.12.2013 20:31

скорее всего должны общаться контроллеры героя и магазина.

dendead 27.12.2013 20:34

Игра представляет из себя подобие тамагочи. В классе "герой" находится код для отображения питомца. Добавление частей тела с помощью addChild и и слушатели событий на действия игрока. В классе "интерфейс" находятся продукты, которыми можно покормить героя и элементы интерфейса (окна, панели и т.д.). Здесь также использую addChild для добавления объектов на сцену и некоторые слушатели для реакции на действия.

Dukobpa3 27.12.2013 20:40

В целом питомец и магазин это совсем разные модули.
Если говорить об мвц то питомец это будет свой контроллер-модель-вью. магазин - своя такая же триада.

Но например контроллер магазина может иметь доступ к модели питомца.
Мы купили в магазине нечто, оно сразу попало в модель питомца, модель питомца сообщила об этом. Вью питомца услышала это сообщение и перерисовалась.

Смешивать два логически разных модуля в один не ок.

shmaser 27.12.2013 20:45

Dukobpa3,
Цитата:

Но только не могу сказать, что герой и магазин - это объекты одного уровня.
Можно чуть больше подробностей? Какие задачи у героя. Что такое герой в данном контексте. Что такое магазин в данном контексте?
Автор указал именно вьюшки героя и магазина. В вашей же статье:
Цитата:

Если брать ближе к флешу, то медиатор часто используют именно со стороны вью.
В медиаторе инкапсулируют несколько вьюх. Медиатор является посредником в общении между этими вью. Каждая из вью видит только свой медиатор, и может отдать/получить данные в/из него.
содержится ответ на вопрос автора:
Цитата:

как наиболее простым способом взаимодействовать между этими классами, если они оба являются классами представления?

dendead 27.12.2013 20:49

У меня основная сложность с классом контроллера. Дальше всё более менее понятно. Например в модели вызывается dispatchEvent, а в вью слушатель принимает этот вызов и рисует отображаемый объект. Что в данном случае должно находится в контроллере?


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

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