![]()
2010.05.21 CHIKATHREESIX
2010.04.16 KNOCKKNOCK
2010.03.08 TAKAIW
2010.02.01 CHIKATHREESIX
2010.01.28 TAKAIW
![]()
![]()
KNOCKKNOCK (10件)小遣い2万円のフラッシュデベロッパー。
帰りが遅いのにキレる嫁をだましだまし制作中・・・。
TAKAIW (13件)フラッシュデベロッパー。遊びでゲームを作るのも好きです。外見に似合わないイラストを描くのも好きです。とにかく作るのが好きです。
CHIKATHREESIX (8件)メタル界のフラッシュデベロッパー。またある時はメタルギタリスト。オーサリング中もヘッドバンギングは絶やさない。
YANBOU (6件)犬と猫で、家が毎日運動会のフラッシュデベロッパー。
ビールから発泡酒へ変更で節約中。
AKUZE (2件)2003年からユナイティアに寄生しているフラッシュデベロッパー。
シルクドソレイユとカナダが好き。
DECO-DEKAI (1件)ビートダウンパートでご飯何杯も食べられます。
ハードコア・テクニカルディレクターを目指して日々精進。
![]()
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);
}
}
}

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