Robotlegs教程01 -- HelloWorld

最近在学Robotlegs,在百度和谷歌里搜了几天,也没找到基本有价值的书(文章、demo...),更别说是纯AS3的。没办法,自己动手,丰衣足食吧(毕竟学的不精,若有错误,望斧正!)

1.先建立一个新的AS3Project
2.将Robotlegs的robotlegs-framework-v1.5.2.swc、SwiftSuspenders-v1.6.0.swc放到lib下,导入到库
3.在Main里new一个HelloWorldContext

    package
    {
            import flash.display.Sprite;
            import flash.events.Event;
            import HelloWorld.HelloWorldContext;

            /**
             * ...
             * @author Fancy
             */
            public class Main extends Sprite
            {

                    public function Main():void
                    {
                            if (stage) init();
                            else addEventListener(Event.ADDED_TO_STAGE, init);
                    }

                    private function init(e:Event = null):void
                    {
                            removeEventListener(Event.ADDED_TO_STAGE, init);
                            var context:HelloWorldContext = new HelloWorldContext(this);
                    }

            }

    }

4.在HelloWorldContext里继承Context

    package HelloWorld
    {
            import flash.display.DisplayObjectContainer;
            import org.robotlegs.mvcs.Context;

            /**
             * ...
             * @author Fancy
             */
            public class HelloWorldContext extends Context
            {

                    public function HelloWorldContext(contextView:DisplayObjectContainer,autoStartup:Boolean = true)
                    {
                            super(contextViewm,autoStartup);
                    }

            }

    }

5.在HelloWorldContext里改写startup方法,并添加model

override public function startup():void
                {
                        injector.mapSingleton(HelloWorldModel);
                }

6.添加事件处理类HelloEvent

    package HelloWorld.events
    {
            import flash.events.Event;

            /**
             * ...
             * @author Fancy
             */
            public class HelloEvent extends Event
            {
                    public static const REQUEST_SHOW:String = "request_show";
                    public static const RESPONSE_SHOW:String = "response_show";
                    public var data:Object;
                    public function HelloEvent(type:String)
                    {
                            super(type);
                    }

            }

    }

7.设置数据类HelloWorldModel

    package HelloWorld.models
    {
            import HelloWorld.events.HelloEvent;
            import org.robotlegs.mvcs.Actor;

            /**
             * ...
             * @author Fancy
             */
            public class HelloWorldModel extends Actor
            {
                    private var showStr:String;
                    public function HelloWorldModel()
                    {
                            showStr = "Hello World!";
                    }

                    //派发响应方法
                    public function requestStr():void
                    {
                            var eve:HelloEvent = new HelloEvent(HelloEvent.RESPONSE_SHOW);
                            eve.data = { "name":showStr };
                            dispatch(eve);
                    }
            }

    }

8.添加View -- 显示文本框

    package HelloWorld.views
    {
            import flash.display.Sprite;
            import flash.text.TextField;

            /**
             * ...
             * @author Fancy
             */
            public class HelloWorldView extends Sprite
            {
                    private var tf_word:TextField;
                    public function HelloWorldView()
                    {
                            tf_word = new TextField();
                            tf_word.x = 100;
                            tf_word.y = 100;
                            addChild(tf_word);
                    }

            }

    }

9.处理HelloWorldView的Mediator,注入HelloWorldView,并改写onRegister

    package HelloWorld.views
    {
            import org.robotlegs.mvcs.Mediator;

            /**
             * ...
             * @author Fancy
             */
            public class HelloWorldMediator extends Mediator
            {
                    [Inject]
                    public var helloView:HelloWorldView;

                    override public function onRegister():void
                    {

                    }
            }

    }

10.派发Mediator的请求事件

    override public function onRegister():void
                    {
                            dispatch(new HelloEvent(HelloEvent.REQUEST_SHOW));
                    }

11.在Context中添加view映射和事件映射

    override public function startup():void
                    {
                            mediatorMap.mapView(HelloWorldView,HelloWorldMediator);
                            injector.mapSingleton(HelloWorldModel);                    }

12.创建处理Command

    package HelloWorld.controller
    {
            import HelloWorld.models.HelloWorldModel;
            import org.robotlegs.mvcs.Command;

            /**
             * ...
             * @author Fancy
             */
            public class HelloWorldCommand extends Command
            {
                    [Inject]
                    public var helloModel:HelloWorldModel;

                    override public function execute():void
                    {
                            helloModel.requestStr();
                    }
            }

    }

13.这时Model已经派发了HelloEvent.RESPONSE_SHOW事件,当然要去Mediator里接收了

    override public function onRegister():void
                    {
                            eventMap.mapListener(eventDispatcher,HelloEvent.RESPONSE_SHOW,onShowHandle);
                            dispatch(new HelloEvent(HelloEvent.REQUEST_SHOW));
                    }
                    private function onShowHandle(e:HelloEvent):void
                    {
                            helloView.updateWord(e.data);
                    }

14.在view中添加updateWord()

    public function updateWord(data:Object):void
                    {
                            tf_word.text = data["name"];
                    }

15.最后我们在new 一个view到context里,就成功了

    override public function startup():void
                    {
                            mediatorMap.mapView(HelloView, HelloViewMediator);
                            injector.mapSingleton(HelloModel);
                            commandMap.mapEvent(HelloEvent.REQUEST_SHOW, HelloCommand);
                            contextView.addChild(new HelloView());
                    }

转自:天地会http://bbs.9ria.com/thread-178881-1-1.html

http://bbs.9ria.com/forum.php?mod=viewthread&tid=218294&highlight=Robotlegs

时间: 2024-11-07 02:25:53

Robotlegs教程01 -- HelloWorld的相关文章

【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

[Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感觉比较难以掌握的一个部分.Zigbee无线组网技术之所以让你感有学习难度,不是因为它真的复杂,而是它看起来很复杂,让人望而止步.另一方面则是Zigbee技术在应用层面上将硬件和软件完成融为一个体系,要求开发人员既要有扎实的硬件技术,又要有清晰的软件思维.    目前,尽管有不少关于Zigbee无线组

Java Web框架-----------------------struts2(官网教程版HelloWorld)

Java Web框架------------------struts2(官网教程版HelloWorld) 我们都知道Struts是Java Web 常用的三大框架之一,另外还有Spring.Hibernate.学习Struts很有必 要!那么怎么学习呢?我的建议是: 1.对于英语能力还可以的人,学技术我们要从官网文档学起,再结合中文别人所写的论文.博客,视频 等.这样可以达到事半功倍的效果. 2.对于阅读英语稍微吃力的人,我们可以下载有道词典,再来本计算机专业英语书,不懂就查,但是, 我们决不能

Node.js 教程 01 - 简介、安装及配置

目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅读本教程?

Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器. 请重置工作目录: git checkout -f step-2 我们的应用现在有了一个包含三部手机的列表. 步骤1和步骤2之间最重要的不同在下面列出.,你可以到GitHub去看完整的差别. 视图

Webpack + React 开发 01 HelloWorld

1.项目依赖 安装所需要依赖的其它第三方开源库,项目依赖如下: "dependencies": { "babel-core": "^6.21.0", "babel-loader": "^6.2.10", "babel-preset-es2015": "^6.18.0", "babel-preset-react": "^6.16.0&quo

[转载]AngularJS入门教程01:静态模板

为了说明angularJS如何增强了标准HTML,我们先将创建一个静态HTML页面模板,然后把这个静态HTML页面模板转换成能动态显示的AngularJS模板. 在本步骤中,我们往HTML页面中添加两个手机的基本信息,用以下命令将工作目录重置到步骤1. git checkout -f step-1 请编辑app/index.html文件,将下面的代码添加到index.html文件中,然后运行该应用查看效果. app/index.html <ul> <li> <span>

ExtJS实战 01——HelloWorld

前言 Extjs5的发布已经有些日子了,目前的最新稳定版本是Extjs5.1.0,我们可以在官方网站进行下载.不过笔者今天访问得到的是502Bad Gateway,原因可能是sencha的nigix没有配置好缓冲. 如果E文比较好,建议跳过本系列教程,直接阅读官方5.1文档. 正文 Extjs是开源的遵循GPL协议,我们下载到的文件包含了源代码,我们要在这堆源代码中找到Extjs5的真正需要引用的文件. 这些文件在build文件夹下.我们首先需要引用的是ext.all.js,(ext.all-d

SpringMVC 教程01

<!-- \WebContent\WEB-INF\dispatcherServlet-servlet.xml --> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst

【转】BCSphere入门教程01:Immediate Alert--不错

原文网址:http://www.ituring.com.cn/article/117570 写在前面 智能硬件开发的起点是智能硬件,在本教程中的每一章节,首先会列出您的蓝牙智能硬件所需要支持的Service,请您确保硬件可以正常的读写特征值,并确认硬件功能正常.可以使用bcsphere-core-dev或者LightBlue对您的硬件进行功能的测试. 硬件最小支持 Service: Immediate AlertUUID: 00001802-0000-1000-8000-00805f9b34fb