robotlegs2.0框架实例源码带注释
Robotlegs2的Starling扩展
有个老外写了robotleges2的starling扩展,地址是
https://github.com/brean/robotlegs2-starling-viewmap
需要注意的是要先创建一个基于Starling的容器,例如继承Starling的Sprite。这个容器的mediator继承roboglegs原生的mediator。然后在这个容器内addChild基于Starling或者Feathers的组件,这些组件的mediator继承StarlingMediator,这样在config里面配置的基于starling或者feathers的组件的view和mediator才会起作用。
需要注意的是一个Starling容器内的子对象最好在该容器的StarlingMediator的initialize() 内执行初始化,这样能确保子对象的view和mediator匹配。
分类: Robotlegsrobotlegs是一个非常好用的框架,个人很喜欢。网上现在也米什么robotlegs2.0版本的中文教程,源码也难得找。前些天有兄弟问robotlegs的问题,我就写了个demo,现在将其放上来,给正在学习robotlegs2.0的兄弟看看,希望能有点帮助。代码有写得不好的地方,希望指点出来,谢谢了!
喜欢的话,赏银1两表示支持下,QQQ!
robotlegs官网:http://www.robotlegs.org/ 可下载框架源码
我有时候不喜欢下载源码,喜欢直接在网页上看代码。可能也有兄弟一样的想法。下面是框架启动的源码:
文档类RobotLegsTest :
- package
{
import flash.display.Sprite;
/**
*
*@author Louis_Song <br />
*创建时间:2013-5-2下午5:31:35
*
*/
public class RobotLegsTest extends Sprite
{
public function RobotLegsTest()
{
var mainView:MainView = new MainView();
this.addChild(mainView);
}
}
}
复制代码
启动类MainView:
- package
{
import flash.display.Sprite;
import robotlegs.bender.bundles.mvcs.MVCSBundle;
import robotlegs.bender.extensions.contextView.ContextView;
import robotlegs.bender.framework.api.IContext;
import robotlegs.bender.framework.impl.Context;
/**
*
*@author Louis_Song <br />
*创建时间:2013-5-3上午11:22:10
*
*/
public class MainView extends Sprite
{
private var _context:IContext;
private var _TopLayer:Sprite;
private var _UILayer:Sprite;
private var _BackgroundLayer:Sprite;
public function MainView()
{
_context = new Context().install(MVCSBundle).configure(AppConfig).configure(new ContextView(this));
_context.injector.map(MainView).toValue(this);
_BackgroundLayer = new Sprite();
this.addChild(_BackgroundLayer);
_UILayer = new Sprite();
this.addChild(UILayer);
_TopLayer = new Sprite();
this.addChild(_TopLayer);
}
public function get UILayer():Sprite
{
return _UILayer;
}
public function get BackgroundLayer():Sprite
{
return _BackgroundLayer;
}
public function get TopLayer():Sprite
{
return _TopLayer;
}
}
}
复制代码
框架配置类AppConfig:
- package
{
import flash.events.Event;
import flash.events.IEventDispatcher;
import robotlegs.bender.extensions.contextView.ContextView;
import robotlegs.bender.extensions.eventCommandMap.api.IEventCommandMap;
import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
import robotlegs.bender.framework.api.IConfig;
import robotlegs.bender.framework.api.IContext;
import robotlegs.bender.framework.api.LogLevel;
import module.login.LoginMediator;
import module.login.LoginView;
import event.LoginEvent;
import service.LoginService;
import commond.LoginCommand;
import core.net.Server;
import module.login.model.LoginModel;
/**
*
*@author Louis_Song <br />
*创建时间:2013-5-2下午5:36:37
*
*/
public class AppConfig implements IConfig
{
[Inject]
public var context:IContext;
[Inject]
public var commandMap:IEventCommandMap;
[Inject]
public var mediatorMap:IMediatorMap;
[Inject]
public var contextView:ContextView;
[Inject]
public var eventDispatcher:IEventDispatcher;
public function AppConfig()
{
}
public function configure():void
{
context.logLevel = LogLevel.DEBUG;//输出日志
//所有的模块model在这里声明
context.injector.map(LoginModel).asSingleton();
//角色model
//背包model
//阵型model
//.....
//。。。service 通信部分
var service:LoginService = new LoginService();
context.injector.map(LoginService).toValue(service);
context.injector.injectInto(service);
//角色service
//背包service
//阵型service
//.....
//commond
commandMap.map(LoginEvent.OPEN).toCommand(LoginCommand);
//角色commond
//背包command
//阵型command
//.....
//mediator绑定view
mediatorMap.map(LoginView).toMediator(LoginMediator);
//角色view
//背包view
//阵型view
//.....
Server.inst.addEventListener(LoginEvent.CONNECT,connectHandler);
//...各种error什么的 ,继续在下面侦听(需要在server里面抛出相应事件)
//框架搞完了,连接服务器,请求ooxx吧
Server.inst.connect('192.168.1.80',8800);
}
/**
*连接服务器成功(连接失败或断开socket神马的,可以走和连接成功一样的流程,写在次函数后面)
* @param evt
*
*/
private function connectHandler(evt:LoginEvent):void
{
//连接成功了,此处相当于一个没有框架的新项目的构造函数了。可以以此为入口 大展拳脚了
//。。。。
//加载资源配置文件。。。
//。。。。
//我在这里请求打开登陆面板,commond的execute会触发
eventDispatcher.dispatchEvent(new LoginEvent(LoginEvent.OPEN));
}
}
}
复制代码
下面是项目源代码,用flash buider写的。可以导入到项目中查看: