Flex之使用Cairngorm(3) - Command & Event

本文介绍如何使用Cairngorm框架实现用户登录功能。包括Command、Event和Controller的创建及交互过程,展示了ActionScript 3与JavaEE模式的相似之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实ActionScript3很象Java代码。Cairngorm也是大量借鉴了Java EE里的模式。

建立Command,实现com.adobe.cairngorm.commands.Command接口. 在execute(event:CairngormEvent) 里实现你的业务逻辑。
UserLoginCommand.as

package net.imzw.UserManagerDemo.command{
import com.adobe.cairngorm.commands.Command;
import com.adobe.cairngorm.control.CairngormEvent;

import mx.controls.Alert;

import net.imzw.UserManagerDemo.event.UserOperationEvent;
import net.imzw.UserManagerDemo.model.UserManagerModelLocator;
import net.imzw.UserManagerDemo.vo.UserVO;

public class UserLoginCommand implements Command{
private var modelLocator:UserManagerModelLocator = UserManagerModelLocator.getInstance();
public function UserLoginCommand(){
super();
}
public function execute(event:CairngormEvent):void{
var userOPEvent:UserOperationEvent = event as UserOperationEvent;
var user:UserVO = userOPEvent.user;

if( user.loginName == "imzw" && user.password == "imzw" ){
modelLocator.workflowState = UserManagerModelLocator.MAIN_SCREEN;
modelLocator.currentUser = user;
}else{
Alert.show("LoginName or Password invalid!");
}
}

}
}


建立Event, 继承com.adobe.cairngorm.control.CairngormEvent。
UserOperationEvent.as

package net.imzw.UserManagerDemo.event
{
import com.adobe.cairngorm.control.CairngormEvent;

import flash.events.Event;

import net.imzw.UserManagerDemo.vo.UserVO;

public class UserOperationEvent extends CairngormEvent{
public static const USER_OPERATION_EVENT:String = "userOperation";
public var user:UserVO;

public function UserOperationEvent(user:UserVO=null, bubbles:Boolean=false, cancelable:Boolean=false){
this.user = user;
super(USER_OPERATION_EVENT, bubbles, cancelable);
}

override public function clone():Event{
return new UserOperationEvent(this.user);
}
}
}

建立Controller,通过addCommand 方法添加UserLoginCommand到Controller。
UserController.as

package net.imzw.UserManagerDemo.control{
import com.adobe.cairngorm.control.FrontController;

import net.imzw.UserManagerDemo.command.UserLoginCommand;
import net.imzw.UserManagerDemo.event.UserOperationEvent;

public class UserController extends FrontController {
public function UserController(){
super();
this.init();
}

private function init():void{
this.addCommand(UserOperationEvent.USER_OPERATION_EVENT, UserLoginCommand);
}
}
}


实例化Controller到Application级。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:view="net.imzw.UserManagerDemo.views.*"
xmlns:control="net.imzw.UserManagerDemo.control.*"
horizontalAlign="center" verticalAlign="middle">
<mx:Script>
<![CDATA[
import net.imzw.UserManagerDemo.model.UserManagerModelLocator;
import mx.controls.Alert;

[Bindable]
private var modelLocator:UserManagerModelLocator = UserManagerModelLocator.getInstance();
]]>
</mx:Script>

<control:UserController />
<mx:ViewStack width="400" height="300"
selectedIndex="{modelLocator.workflowState}">
<view:LoginForm />
<view:MainScreen />
</mx:ViewStack>
</mx:Application>


代码见附件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值