![]()
2011.09.30 Kikuchi
2011.08.08 takaiw
2011.07.01 knockknock
2011.05.17 Naoki Muramatsu
2011.05.02 knockknock
![]()
![]()
Naoki Muramatsu (1件) Twitter:@Stryfy.
deco-dekai (1件)
ビートダウンパートでご飯何杯も食べられます。
ハードコア・テクニカルディレクターを目指して日々精進。
yanbou (6件)
犬と猫で、家が毎日運動会のフラッシュデベロッパー。
ビールから発泡酒へ変更で節約中。
chikatherrsix (8件) メタル界のフラッシュデベロッパー。またある時はメタルギタリスト。オーサリング中もヘッドバンギングは絶やさない。
akuze (2件)
2003年からユナイティアに寄生しているフラッシュデベロッパー。
シルクドソレイユとカナダが好き。
knockknock (16件)
小遣い2万円のフラッシュデベロッパー。
帰りが遅いのにキレる嫁をだましだまし制作中・・・。
takaiw (18件) フラッシュデベロッパー。遊びでゲームを作るのも好きです。外見に似合わないイラストを描くのも好きです。とにかく作るのが好きです。
![]()
HOME > 第3回 Flash座談会 ~ASデザインパターン考証 MVC編~
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class Model extends EventDispatcher implements IModel
{
protected var _key:int;
public function setKey(key:int):void {
_key = key;
this.update();
}
public function getKey():int {
return _key;
}
protected function update():void {
dispatchEvent(new Event(Event.CHANGE));
}
}
}
package
{
import flash.events.KeyboardEvent;
public class Controller implements IController
{
private var model:Object;
public function Controller(aModel:Object) {
this.model = aModel;
}
public function keyPressHandler(event:KeyboardEvent):void {
(model as IModel).setKey(event.keyCode);
}
}
}
package
{
import flash.display.Sprite;
import flash.errors.IllegalOperationError;
import flash.events.Event;
/**
* Viewの基本クラス
*/
public class ComponentView extends Sprite
{
protected var model:Object;
protected var controller:Object;
public function ComponentView(aModel:Object = null, aController:Object = null)
{
this.model = aModel;
this.controller = aController;
}
public function setModelController(aModel:Object = null, aController:Object = null):void
{
this.model = aModel;
this.controller = aController;
}
public function add(c:ComponentView):void
{
throw new IllegalOperationError("add operation not supported");
}
public function remove(c:ComponentView):void
{
throw new IllegalOperationError("remove operation not supported");
}
public function getChild(n:int):ComponentView
{
throw new IllegalOperationError("getChild operation not supported");
return null;
}
//ABSTRACT Method
public function update(e:Event = null):void{}
}
}
package
{
import com.chikathreesix.mvc.ComponentView;
import flash.events.Event;
/**
* 複数のViewを持つView
*/
public class CompositeView extends ComponentView
{
private var aChildren:Array;
public function CompositeView(aModel:Object = null, aController:Object = null)
{
super(aModel, aController);
this.aChildren = new Array();
}
override public function setModelController(aModel:Object = null, aController:Object = null):void
{
super.setModelController(aModel, aController);
for each(var c:ComponentView in aChildren)
{
c.setModelController(aModel, aController);
}
}
override public function add(c:ComponentView):void
{
aChildren.push(c);
}
override public function remove(c:ComponentView):void
{
super.remove(c);
for (var i = 0; i < aChildren.length; i++)
{
if (aChildren[i] == c)
{
aChildren.splice(i, 1);
}
}
}
override public function update(e:Event = null):void
{
for each(var c:ComponentView in aChildren)
{
c.update(e);
}
}
}
}
package
{
import flash.events.Event;
import flash.events.KeyboardEvent;
public class View extends ComponentView
{
public function ComponentView(aModel:Object = null, aController:Object = null)
{
super(aModel, aController);
this.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyPress);
}
private function _onKeyPress(event:KeyboardEvent):void {
(controller as IController).setKey(event);
}
override public function update(e:Event = null):void
{
super.update(e);
trace((model as IModel).getKey());
}
}
}
package
{
import flash.display.Sprite;
import flash.events.Event;
public class DocumentClass extends Sprite
{
public function DocumentClass() {
var model:IModel = new Model();
var controller:IController = new Controller(model);
var view:View = new View(model, controller);
model.addEventListener(Event.CHANGE, view.update);
}
}
}

chikatherrsix メタル界のフラッシュデベロッパー。またある時はメタルギタリスト。オーサリング中もヘッドバンギングは絶やさない。