基于MVC模式的Flash Remoting类

为方便自己,我特意用MVC模式改写了Flash Remoting类,适用于AS2.0。但愿对大家还有些用。

一、RemotingModel 父类

**
*	@class RemotingModel 
*	@author Flying
*	@copyright 2006 riafan
*/
import mx.remoting.Service;
import mx.services.Log;
import mx.remoting.PendingCall;;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.debug.NetDebug;
import mx.events.EventDispatcher;

class com.riafan.RemotingModel {
	private var gatewayURL:String;
	private var servicePath:String;
	private var svc:Service;
	public var addEventListener:Function;
	private var removeEventListener:Function;
	private var dispatchEvent:Function;
	private var dispatchQueue:Function;

	/**
   	* Constructor
	* 
	* 	@param		$gatewayURL	gateway URL
	* 	@param		$serviceName	service name
	* 	@param		$uid		username
	* 	@param		$pwd		password
	*
	*/
	public function RemotingModel($gatewayURL, $serviceName, $uid, $pwd) 
	{		
		// initialize as a broadcaster
		EventDispatcher.initialize(this);
		
		// create a new service
		svc = new Service ($gatewayURL, null, $serviceName, null, null);
		
		// credentials
		if ($uid != undefined && $pwd != undefined) {
			svc.connection.setCredentials($uid, $pwd);
		}	
	}
	/**
   	* Global fault event
	*/
	private function handleRemotingModelError(fault:FaultEvent):Void 
	{
		mx.remoting.debug.NetDebug.trace({level:"None", message:"Error: " + fault.fault.faultstring });
	}
	/**
   	* Event dispatcher
	* 
	* 	@param		$data		data
	* 	@param		$type		event type
	*
	*/
	private function dispatch($data, $type)
	{
		// broadcast message
  		var eventObj:Object={target:this,type:$type}
		eventObj.data = $data;
  		dispatchEvent(eventObj);
	}
	
}

二、RemotingView父类

/**
*	@class RemotingView 
*	@author Flying
*	@copyright 2006 riafan
*/
import mx.events.EventDispatcher;
class com.riafan.RemotingView  
{
	private var target:MovieClip;
	public var addEventListener:Function;
	public var removeEventListener:Function;
	public var dispatchEvent:Function;
	public var dispatchQueue:Function;
	/**
   	* Constructor
	*
	* 	@param	mc	target (target timeline: _root || a mc)
	*/
	public function RemotingView ($target:MovieClip) 
	{
		target = $target;
		
		// initialize as a broadcaster
		EventDispatcher.initialize(this);
	}	
	/**
   	* Event dispatcher
	* 
	* 	@param		$data		data
	* 	@param		$type		event type
	*
	*/
	private function dispatch($data, $type)
	{
		// broadcast message
  		var eventObj:Object={target:this,type:$type}
		eventObj.data = $data;
  		dispatchEvent(eventObj);
	}
}

实际应用中,如果我们的项目并不复杂,就没有必要写父类了。

评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭