作者ben0209 (邦邦)
看板Flash
标题Re: [问题] 关於puremvc,相同类型view物件注册med …
时间Thu Sep 1 10:49:56 2011
TestMultiBtnMediator.as
package
{
import flash.display.DisplayObjectContainer;
import flash.display.Shape;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.text.TextField;
[SWF(width="400", height="400")]
public class TestMultiBtnMediator extends Sprite
{
public var btnsContainer:DisplayObjectContainer;
private var facade:MyFacade;
public function TestMultiBtnMediator()
{
super();
initUI();
initPureMVC();
}
private function initUI():void{
btnsContainer = new Sprite();
addChild(btnsContainer);
var btn:SimpleButton;
for(var i:int=0; i<20; i++){
btn = makeBtn(i);
btnsContainer.addChild(btn);
btn.x = 10 * i;
btn.y = 10 * i;
}
}
private function makeBtn(idx:int):SimpleButton{
var txt:TextField = new TextField();
txt.text = String(idx);
var hit:Shape = new Shape();
hit.graphics.beginFill(0xffffff * Math.random());
hit.graphics.drawRect(0, 0, 20, 20);
hit.graphics.endFill();
var btn:SimpleButton = new SimpleButton(txt, txt, txt, hit);
return btn;
}
private function initPureMVC():void{
facade = new MyFacade();
facade.startup(this);
}
}
}
MyFacade.as
package
{
import flash.display.SimpleButton;
import mediator.MyBtnMediator;
import org.puremvc.as3.patterns.facade.Facade;
public class MyFacade extends Facade
{
public function startup(viewComp:TestMultiBtnMediator):void{
var btnMediator:MyBtnMediator;
for(var i:int=0; i<viewComp.btnsContainer.numChildren; i++){
var btn:SimpleButton = SimpleButton(viewComp.btnsContainer.getChildAt(i));
btnMediator = new MyBtnMediator(btn);
this.registerMediator(btnMediator);
}
}
}
}
mediator/MyBtnMediator.as
package mediator
{
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import org.puremvc.as3.patterns.mediator.Mediator;
public class MyBtnMediator extends Mediator
{
static public function getNameOfMediator(viewCompName:String):String{
return "MyBtnMediator_" + viewCompName;
}
private function get viewComp():SimpleButton{
return viewComponent as SimpleButton;
}
public function MyBtnMediator(viewComponent:SimpleButton)
{
super(getNameOfMediator(viewComponent.name), viewComponent);
}
override public function onRegister():void{
trace(viewComp, viewComp.name, mediatorName, viewComp.x, viewComp.y);
viewComp.addEventListener(MouseEvent.CLICK, onBtnClickHandler);
}
private function onBtnClickHandler(e:MouseEvent):void{
trace(mediatorName, "clicked");
}
}
}
※ 引述《hpuser (HpUser)》之铭言:
: 请问各位先进:
: 舞台上有一个自订的button,移过去会变大,移出去会变小,
: 如要实作puremvc,就要 把这个button注册给一个mediator,
: 由这个mediator来控制变大变小的效果.
: 可是因需要,场景上会动态增加多个button,甚至更多,
: 难道要一个一个注册给mediator吗?
: 有没有可能 我只要注册这个自订button类别给mediator,
: 一次就可以了,或是更方便的作法?
: 看教学,view物件似乎都是舞台上已经存在的实体居多,
: 没看过注册类别给mediator.
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.147.239.66
1F:→ ben0209:这篇,开始pureMVC之前,就动态建立btn*20 09/01 11:04