robotlegs2.0框架实例源码带注释

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 :

  1. package
  2. {
  3. import flash.display.Sprite;
  4. /**
  5.   *
  6.   *@author Louis_Song <br />
  7.   *创建时间:2013-5-2下午5:31:35
  8.   *
  9.   */
  10. public class RobotLegsTest extends Sprite
  11. {
  12.   public function RobotLegsTest()
  13.   {
  14.    var mainView:MainView = new MainView();
  15.    this.addChild(mainView);
  16.   }
  17. }
  18. }
复制代码
启动类MainView:
  1. package
  2. {
  3.         import flash.display.Sprite;
  4.         
  5.         import robotlegs.bender.bundles.mvcs.MVCSBundle;
  6.         import robotlegs.bender.extensions.contextView.ContextView;
  7.         import robotlegs.bender.framework.api.IContext;
  8.         import robotlegs.bender.framework.impl.Context;
  9.         /**
  10.          *
  11.          *@author Louis_Song <br />
  12.          *创建时间:2013-5-3上午11:22:10
  13.          *
  14.          */
  15.         public class MainView extends Sprite
  16.         {
  17.                 private var _context:IContext;
  18.                 private var _TopLayer:Sprite;
  19.                 private var _UILayer:Sprite;
  20.                 private var _BackgroundLayer:Sprite;
  21.                 public function MainView()
  22.                 {
  23.                         _context = new Context().install(MVCSBundle).configure(AppConfig).configure(new ContextView(this));
  24.                         _context.injector.map(MainView).toValue(this);
  25.                         _BackgroundLayer = new Sprite();
  26.                         this.addChild(_BackgroundLayer);
  27.                         _UILayer = new Sprite();
  28.                         this.addChild(UILayer);
  29.                         _TopLayer = new Sprite();
  30.                         this.addChild(_TopLayer);
  31.                 }
  32.                 public function get UILayer():Sprite
  33.                 {
  34.                         return _UILayer;
  35.                 }
  36.                 public function get BackgroundLayer():Sprite
  37.                 {
  38.                         return _BackgroundLayer;
  39.                 }
  40.                 public function get TopLayer():Sprite
  41.                 {
  42.                         return _TopLayer;
  43.                 }
  44.         }
  45. }
复制代码
框架配置类AppConfig:
  1. package
  2. {
  3.         import flash.events.Event;
  4.         import flash.events.IEventDispatcher;
  5.         
  6.         import robotlegs.bender.extensions.contextView.ContextView;
  7.         import robotlegs.bender.extensions.eventCommandMap.api.IEventCommandMap;
  8.         import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
  9.         import robotlegs.bender.framework.api.IConfig;
  10.         import robotlegs.bender.framework.api.IContext;
  11.         import robotlegs.bender.framework.api.LogLevel;
  12.         import module.login.LoginMediator;
  13.         import module.login.LoginView;
  14.         import event.LoginEvent;
  15.         import service.LoginService;
  16.         import commond.LoginCommand;
  17.         import core.net.Server;
  18.         import module.login.model.LoginModel;
  19.         
  20.         /**
  21.          *
  22.          *@author Louis_Song <br />
  23.          *创建时间:2013-5-2下午5:36:37
  24.          *
  25.          */
  26.         public class AppConfig implements IConfig
  27.         {
  28.                 [Inject]
  29.                 public var context:IContext;
  30.                 [Inject]
  31.                 public var commandMap:IEventCommandMap;
  32.                 [Inject]
  33.                 public var mediatorMap:IMediatorMap;
  34.                 [Inject]
  35.                 public var contextView:ContextView;
  36.                 [Inject]
  37.                 public var eventDispatcher:IEventDispatcher;
  38.                 public function AppConfig()
  39.                 {
  40.                 }
  41.                 public function configure():void
  42.                 {
  43.                         context.logLevel = LogLevel.DEBUG;//输出日志
  44. //所有的模块model在这里声明
  45. context.injector.map(LoginModel).asSingleton();
  46.                         //角色model
  47.                         //背包model
  48.                         //阵型model
  49.                         //.....
  50.                         //。。。service 通信部分
  51. var service:LoginService = new LoginService();
  52.                         context.injector.map(LoginService).toValue(service);
  53.                         context.injector.injectInto(service);
  54.                         //角色service
  55.                         //背包service
  56.                         //阵型service
  57.                         //.....
  58.                         //commond
  59.                         commandMap.map(LoginEvent.OPEN).toCommand(LoginCommand);
  60.                         //角色commond
  61.                         //背包command
  62.                         //阵型command
  63.                         //.....
  64.                         //mediator绑定view
  65.                         mediatorMap.map(LoginView).toMediator(LoginMediator);
  66.                         //角色view
  67.                         //背包view
  68.                         //阵型view
  69.                         //.....
  70.                         Server.inst.addEventListener(LoginEvent.CONNECT,connectHandler);
  71.                         //...各种error什么的 ,继续在下面侦听(需要在server里面抛出相应事件)
  72. //框架搞完了,连接服务器,请求ooxx吧
  73. Server.inst.connect('192.168.1.80',8800);
  74.                 }
  75.                 /**
  76.                  *连接服务器成功(连接失败或断开socket神马的,可以走和连接成功一样的流程,写在次函数后面) 
  77. * @param evt
  78.                  * 
  79.                  */                
  80.                 private function connectHandler(evt:LoginEvent):void
  81.                 {
  82.                         //连接成功了,此处相当于一个没有框架的新项目的构造函数了。可以以此为入口 大展拳脚了
  83. //。。。。
  84. //加载资源配置文件。。。
  85. //。。。。
  86. //我在这里请求打开登陆面板,commond的execute会触发
  87. eventDispatcher.dispatchEvent(new LoginEvent(LoginEvent.OPEN));
  88.                 }
  89.         }
  90. }
复制代码
下面是项目源代码,用flash buider写的。可以导入到项目中查看:
原文地址:https://www.cnblogs.com/Leo_wl/p/3657738.html