Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.08.2013, 17:06
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Post MouseEvent: Разделение кода на классы.

Есть небольшой, простой код:

Код AS3:
package
{
 
 
	import flash.display.*;
  	import flash.text.*;
  	import flash.events.*;
 
 
	 	public class MouseTrigger extends Sprite
  		{
 
			private var text1:TextField;
			private var clickCounter:uint = 0;
 
 
			public function MouseTrigger()
			{
				textInit();
 
				mouseInit();	
 
			}
 
			private function textInit()
			{
 				//--- MouseClick textfield setup ---//
				text1 = new TextField();
				text1.text = "MouseClick";
				text1.selectable = false;
				text1.autoSize   = TextFieldAutoSize.LEFT;
 
 				addChild(text1);
 
			}
 
			private function mouseInit()
			{
				text1.addEventListener(MouseEvent.CLICK, clickTrigger);
 
			}
 
			private function clickTrigger(e:MouseEvent)
			{
				clickCounter ++;
				text1.text = "MouseClick: triggered " + clickCounter.toString() + " times";
 
			}
 
 
		}
 
}
Нужно разбить его на три класса, например: MouseTrigger.as, MouseInit.as, TextInit.as
Наверное, это что-то связанное с термином MVC, и тогда я могу предположить, что:
первый это - Контроллер (= Document Class), второй - Модель, третий - Вью.

Пробовал разными вариантами, но неполучалось.
Проблемы возникют различные: на уровне абстрактной передачи классу MouseTrigger инфы о текстовом поле, или например на уровне addChild (ошибок нет, но и текстфилда нет), и т.п.
Я мог бы привести кривые коды, но наверное в этом нет смысла.

Не могли бы вы показать как это грамотно сделать?
Уместно ли вообще для такого короткого кода использовать MVC?
Впрочем, привязка к MVC необязательна, если можно разбить этот код на три части другим способом, тоже хорошо.

Старый 05.08.2013, 17:40
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 2  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
Код AS3:
Уместно ли вообще для такого короткого кода использовать MVC?
для такого - не уместно, но если вопрос - поразмять мышыцы, то примерно так:

контроллер, он не наследник ДО, он обжект, в который передается ссылка на главный контейнер (рут, вероятнее всего). создали в руте, передали ссылку на конетейнер...в нем созадете свой вью(мувик с текстфилдом), создаете модель (в вашем примере ее нет). передаете ссылку на модель в вью и там слушаете изменения модели и меняете вью. контроллер слушает клик вью и меняет модель, модель диспатчит событие об изменении, вью, слушая это событие меняется)

чего-то много букв я написал и, скороее всего, не понятно ))
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 05.08.2013, 19:23
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 3  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Вот Ваш пример кода, только сделан через простейший MVC шаблон - это так, для разминки головы.
Я думаю, Вам многое будет не понятно, что и как между собой связанно.
Я бы посоветовал оставить MVC в покое и как Вам уже советовали пить кофе, в перерывах между чтением.
Вы заблудились в "трех березах"(ваш пример с загрузкой фото), а в "трех кварталах города"(MVC) тем более потеряетесь.Не обижайтесь, всему свое время.
Вложения
Тип файла: rar MVC.RAR (6.7 Кб, 48 просмотров)

Старый 06.08.2013, 11:12
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 4  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
cleptoman, да, навскидку мало что понятно : ) Нужно рисовать диаграмму со стрелочками, например.
Хотя в программе belv кое-какие мотивы просматриваются, например отсутствие Модели. Я не знаю, что такое ДО, видимо DisplayObject.

belv, О! Большое спасибо за готовый пример.
Цитата:
Вот Ваш пример кода, только сделан через простейший MVC шаблон - это так, для разминки головы.
Я думаю, Вам многое будет не понятно, что и как между собой связанно.
Да, я посмотрел на коды, уровень абстратности, и "передаточности" = жэсть конешно! : )
Понял где-то на 40% наверное. Операторы сами по себе понятны, а вот их взаимосвязь - это остальные 60%.
Не подозревал, что нужно будет привлекать общий дипспетчер событий и интерфейсы.

Цитата:
Я бы посоветовал оставить MVC в покое и как Вам уже советовали пить кофе, в перерывах между чтением.
Вы заблудились в "трех березах"(ваш пример с загрузкой фото), а в "трех кварталах города"(MVC) тем более потеряетесь.Не обижайтесь, всему свое время.
Разумеется. Я пока и не претендую на изучение паттернов. Просто я думал, что для такого простого примера и аналогичное разделение будет достаточно понятным, и общее впечатление об MVC будет выше.

Если вас не затруднит, не могли бы вы привести еще и наиболее простой пример разбиения этого кода на 3 класса?

Было бы весьма поучительно (не только для меня, но и для всех новичков в AS3.0, читающих этот пост) сравнить сложный метод реализации этой задачи (через MVC) с наиболее простым.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
MouseEvent , MVC , разделение кода
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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