Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3248040
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类:

2010-05-05 20:46:28

1.本例目的
    parsley使用入门
    IOC功能基本演示
    托管事件及处理演示

2.本例代码结构
src
  --Beans.mxml  //配置文件
  --test.mxml   //主程序
  com.test.event
     --LoginEvent.as  //登录事件类
  com.test.service
     --ILoginService.as  //登录处理接口
     --LoginServiceImpl.as  //登录处理实现类

3.代码详细说明
BeansConfig.mxml

     xmlns:s="library://ns.adobe.com/flex/spark"
     xmlns:mx="library://ns.adobe.com/flex/mx"
     xmlns:spicefactory="">
 
     import com.test.service.*;
  ]]>
 

 
  
 



说明:
    实例化LoginServiceImpl,该对象的ID为loginService

test.mxml

      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      xmlns:parsley=""
      minWidth="955" minHeight="600">
 
  

 
 
    
    
 

 
     import com.test.event.LoginEvent;
   import com.test.service.ILoginService;
   import mx.controls.Alert; 
   
   //根据ID,将ILoginService的实现类通过parsley自动注入到这里
   [Inject(id="loginService")]
   public var service:ILoginService;
  
   private function onLoginClick():void{
    this.service.login('d_yang','******');
   }
   
   //当parsley框架监听到有一个类派发LoginEvent事件,并且类型为loginSuccess时,
   //由onLoginSuc函数进行处理。
   [MessageHandler(selector="loginSuccess")]
   public function onLoginSuc(evt:LoginEvent):void{
    //登录后干点啥。。。
    btnlogin.label="登录成功";
    Alert.show("登录成功");
   }
  ]]>
 

 

说明:
1.上下文环境设置


       //将当前窗体注册到parsley
       //加载配置文件,初始化
 

注意: parsley2.0的代码应该如下,在主程序的 preinitialize事件和addToStage事件中执行以下语句,初始化所有对象
    preinitialize="FlexContextBuilder.build(BeansConfig)" 
    addedToStage="dispatchEvent(new Event('configureIOC', true));"

2.由于这里使用了parsley,通过IOC,将对象自动注入到接口ILoginService
    [Inject(id="loginService")]
    public var service:ILoginService;
  如果ILoginService只存在一个实现类,则可省略ID号,parsley会自动找到该接口的实现类
    [Inject]
    public var service:ILoginService;
3.如果将[MessageHandler(selector="loginSuccess")]改成[MessageHandler],则无论是loginSuccess或loginFail(只要是LoginEvent事件),onLoginSuc函数都进行处理。


com.test.event.LoginEvent.as
package com.test.event
{
    import flash.events.Event;

    public class LoginEvent extends Event
    {
        public function LoginEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
        {
            super(type, bubbles, cancelable);
        }
       
        public static const LOGINSUCCESS:String = "loginSuccess";
        public static const LOGINFAIL:String = "loginFail";
       
    }
}

说明:
1.自定义一个登录事件
2.事件中有两个常量:LOGINSUCCESS和LOGINFAIL

package com.test.service.ILoginService
package com.test.service
{
    public interface ILoginService
    {
        function login(user:String, passwd:String):void;
    }
}
说明:
1.声明一个登录处理接口

package com.test.service.LoginServiceImpl
package com.test.service
{
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    import com.test.event.LoginEvent;

    //声明loginSuccess,loginFail类型的LoginEvent事件为托管事件
    [Event(name="loginSuccess",type="com.test.event.LoginEvent")]
    [Event(name="loginFailed",type="com.test.event.LoginEvent")]
    [ManagedEvents("loginSuccess,loginFail")]
    public class LoginServiceImpl extends EventDispatcher implements ILoginService
    {
        public function LoginServiceImpl(target:IEventDispatcher=null)
        {
            super(target);
        }
        public function login(user:String, passwd:String):void
        {
            var evt:LoginEvent = new LoginEvent(LoginEvent.LOGINSUCCESS);
            this.dispatchEvent(evt);//派发LoginEvent事件
        }
    }
}
说明:
1.由于LoginServiceImpl类会派发托管事件,则该类必须继承flash.events.EventDispatcher类
2.如果是将LoginEvent事件的所有类型都声明为托管事件,则可省略
    [Event(name="loginSuccess",type="com.test.event.LoginEvent")]
    [Event(name="loginFailed",type="com.test.event.LoginEvent")]

4.开发环境

  flash builder4 正式版; parsley2.2.2 ; flex4_sdk_0.0.14159

5.总结

有些朋友遇到注入失败的问题,主要原因是parsley的版本与程序的兼容问题,比如parsley2.0编写的代码就与parsley2.2.2不能互用。


阅读(1832) | 评论(3) | 转发(0) |
0

上一篇:C语言_作业5答案

下一篇:parsey常用错误

给主人留下些什么吧!~~

chinaunix网友2010-06-10 22:37:24

'configureIOC'是什么?

chinaunix网友2010-06-10 21:03:22

为什么我用你提供的例子发生率: 无法访问空对象引用的属性或方法。 我用的是Flash Builder 4,SDK是3.5,莫非要在SDK4下才能运行?

chinaunix网友2010-05-27 12:43:01

你这个程序能跑?