Это правильная реализация MVC в ActionScript 3?

Программа всего лишь нажимает кнопку, и она сообщает вам, сколько раз вы нажимали кнопку в текстовом поле.

Класс документа: это точка входа в код.

package {
    import flash.display.MovieClip;

    /**
     * MVCTest.as
     * @author rotaercz
     */
    public class MVCTest extends MovieClip {
        private var _model:Model;
        private var _view:View;
        private var _control:Control;

        public function MVCTest() {
            _model = new Model();
            _view = new View(this);
            _control = new Control(_model, _view);
        }
    }
}

Класс модели: основной код модели.

package {

    /**
     * Model.as
     * @author rotaercz
     */
    public class Model {
        private var _totalClicks:int;

        public function AddClick():void {
            _totalClicks++;
        }

        public function get Clicks():int {
            return _totalClicks;
        }

        public function Model() {
            _totalClicks = 0;
        }
    }
}

Класс управления: управляет как вводом, так и обновлением модели и просмотра здесь.

package {
    import flash.events.MouseEvent;

    /**
     * Control.as
     * @author rotaercz
     */
    public class Control {
        private var _model:Model;
        private var _view:View;

        public function Control(model:Model, view:View):void {
            _model = model;
            _view = view;
            _view.addEventListener(MouseEvent.CLICK, OnClick);
        }

        private function OnClick(e:MouseEvent):void {
            _model.AddClick();
            _view.Text = "clicked " + _model.Clicks;
        }
    }
}

Класс просмотра: визуальное представление программы.

package {
    import flash.display.MovieClip;
    import flash.events.EventDispatcher;
    import flash.events.MouseEvent;
    import flash.text.TextField;

    /**
     * View.as
     * @author rotaercz
     */
    public class View extends EventDispatcher {
        private var _parent:MovieClip;
        private var _button:MovieClip;

        private var _dt:TextField;

        public function set Text(s:String):void {
            _dt.text = s;
        }

        public function View(parent:MovieClip) {
            _parent = parent;
            _dt = _parent.getChildByName("dt") as TextField;
            _button = _parent.getChildByName("mcButton") as MovieClip;
            _button.addEventListener(MouseEvent.CLICK, OnClick);
        }

        private function OnClick(e:MouseEvent):void {
            dispatchEvent(e);
        }
    }
}
6
задан rotaercz 11 November 2011 в 01:56
поделиться