Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MouseEvent: Разделение кода на классы. (http://www.flasher.ru/forum/showthread.php?t=202726)

Fogflasher 05.08.2013 17:06

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 необязательна, если можно разбить этот код на три части другим способом, тоже хорошо.

cleptoman 05.08.2013 17:40

Код AS3:

Уместно ли вообще для такого короткого кода использовать MVC?

для такого - не уместно, но если вопрос - поразмять мышыцы, то примерно так:

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

чего-то много букв я написал и, скороее всего, не понятно ))

belv 05.08.2013 19:23

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

Fogflasher 06.08.2013 11:12

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

belv, О! Большое спасибо за готовый пример.
Цитата:

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

Цитата:

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

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

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


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

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