- 浏览: 1451195 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
一. 相关说明:
本篇将呈现完整的Flash Remoting访问远程服务器,包括以可视化组件方式和以编程方式访问远程服务器。Asp.net服务器端和Flex客户端完整代码下载。
二. 相关代码预览:
1.frServices.as,以编程方式访问远程服务器。
package com.demo.fr
{
import flash.events.EventDispatcher;
import flash.net.NetConnection;
import flash.net.Responder;
//用代码调用flash Remoting。
public class frServices
{
//Remoting服务器对象完整名称。
private var name_ServerClass : String = "Hxw.Demo.FlashRemoting.Hellow";
//初始化一个事件广播对象。
private var eventDispatcher : EventDispatcher = new EventDispatcher();
//事件关键字定义:Event_KEY_Success_DisplayHellow。
public static var Event_KEY_Success_DisplayHellow : String = "Event_KEY_Success_DisplayHellow";
//事件关键字定义:Event_KEY_Success_SayHellowWorld。
public static var Event_KEY_Success_SayHellowWorld : String = "Event_KEY_Success_SayHellowWorld";
//事件关键字定义:Event_KEY_Success_GetUsers。
public static var Event_KEY_Success_GetUsers : String = "Event_KEY_Success_GetUsers";
//事件关键字定义:Event_KEY_Fault。
public static var Event_KEY_Fault : String = "Event_KEY_Fault";
//Remoting连接对象。
private var conn : NetConnection = null;
//Flash Remoting方法返回值获取对象。
private var rp :Responder = null;
//构造器。
public function frServices()
{
}
//开始调用远程服务方法。
public function preCall(result : Function):void
{
//初始化Remoting连接对象。
this.conn = new NetConnection();
//调用connect( )方法,传递进Flash Remoting网关的URL。
this.conn.connect("http://localhost:5678/WebFR/Gateway.aspx");
this.rp = new Responder(result,onError);
}
//调用远程服务方法。
public function call_DisplayHellow():void
{
this.preCall(onResult_DisplayHellow);
//对象的call( )方法调用Flash Remoting方法,call( )方法需要两个参数,
//第一个参数指定方法名称和路径,第二个参数指定响应处理函数,如果不需要处理函数,可直接设为null
//处理FlashRemoting响应。
this.conn.call(this.name_ServerClass + ".DisplayHellow",this.rp);
}
//调用远程服务方法。
public function call_SayHellowWorld(name : String):void
{
this.preCall(onResult_SayHellowWorld);
this.conn.call(this.name_ServerClass + ".SayHellowWorld",this.rp,name);
}
//调用远程服务方法。
public function call_GetUsers():void
{
this.preCall(onResult_GetUsers);
this.conn.call(this.name_ServerClass + ".GetUsers",this.rp);
}
//调用服务成功。
private function onResult_DisplayHellow(result : Object) : void
{
this.resultHandler(result,"DisplayHellow",frServices.Event_KEY_Success_DisplayHellow);
}
private function onResult_SayHellowWorld(result : Object) : void
{
this.resultHandler(result,"SayHellowWorld",frServices.Event_KEY_Success_SayHellowWorld);
}
private function onResult_GetUsers(result : Object) : void
{
this.resultHandler(result,"GetUsers",frServices.Event_KEY_Success_GetUsers);
}
//调用服务成功的处理。
private function resultHandler(result : Object,targetName : String ,eventKey : String) : void
{
var ce : CUEvent = new CUEvent(eventKey);
ce.Sender = result;
ce.CurrentTargetName = targetName;
this.eventDispatcher.dispatchEvent(ce);
}
//调用服务失败。
private function onError(error : Object):void
{
var ce : CUEvent = new CUEvent(Event_KEY_Fault);
ce.Sender = error;
this.eventDispatcher.dispatchEvent(ce);
}
//创建一个供外部调用的附加事件侦听的方法。
public function addEventListener(type : String , listener : Function):void
{
this.eventDispatcher.addEventListener(type,listener);
}
}
}
2.CUEvent.as,自定义事件。
package com.demo.fr
{
import flash.events.Event;
//从Event继承一个类。
//为什么as3中仅仅能够定义一个构造器,郁闷。
public class CUEvent extends Event
{
//数据实体。
private var _sender : Object = null;
//方法名。
private var _currentTargetName: String = "";
//构造器(为什么as3中仅仅能够定义一个构造器,郁闷)。
public function CUEvent(type : String,bubbles : Boolean = false,cancelable : Boolean = false)
{
super(type,bubbles,cancelable);
}
//获取 数据实体。
public function get Sender():Object
{
return this._sender;
}
//设置 数据实体。
public function set Sender(value : Object) : void
{
this._sender = value;
}
//获取 方法名称。
public function get CurrentTargetName() : String
{
return this._currentTargetName;
}
//设置 方法名称。
public function set CurrentTargetName(value : String) :void
{
this._currentTargetName = value;
}
}
}
3.User.as,数据模型,对应服务器端的User.cs。
package com.demo.fr
{
[RemoteClass(alias="Hxw.Demo.FlashRemoting.User")]
public class User
{
public function User()
{
}
private var _name : String = "";
private var _age : int = 0;
private var _sex : String = "";
public function get Name():String
{
return this._name;
}
public function set Name(v:String):void
{
this._name = v;
}
public function get Age():int
{
return this._age;
}
public function set Age(v:int):void
{
this._age = v;
}
public function get Sex():String
{
return this._sex;
}
public function set Sex(v:String):void
{
this._sex = v;
}
public function toString():String
{
return "姓名:" + this._name + ";年龄:" + this._age.toString() + ";性别:" + this._sex;
}
}
}
4.MXML Application代码。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import com.demo.fr.CUEvent;
import flash.net.navigateToURL;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import com.demo.fr.User;
import com.demo.fr.frServices;
import mx.styles.StyleManager;
//1表示以可视化组件方式访问过程服务器。
//2表示以编程方式访问过程服务器。
private var mode : int = 2;
//调用相关的Remoting服务或模式。
private function callServer(fn : String):void
{
if(this.mode == 1)
{
switch(fn)
{
case "DisplayHellow":
sampleRemoteObject.DisplayHellow();
break;
case "SayHellowWorld":
sampleRemoteObject.SayHellowWorld(this.txtMessage.text);
break;
case "GetUsers":
sampleRemoteObject.GetUsers();
break;
}
}
else
{
var fr : frServices = new frServices();
this.addEventListener(frServices.Event_KEY_Fault,onRemoteFault2);
switch(fn)
{
case "DisplayHellow":
fr.addEventListener(frServices.Event_KEY_Success_DisplayHellow,onRemoteResult2);
fr.call_DisplayHellow();
break;
case "SayHellowWorld":
fr.addEventListener(frServices.Event_KEY_Success_SayHellowWorld,onRemoteResult2);
fr.call_SayHellowWorld(this.txtMessage.text);
break;
case "GetUsers":
fr.addEventListener(frServices.Event_KEY_Success_GetUsers,onRemoteResult2);
fr.call_GetUsers();
break;
}
}
}
//当Remoting服务调用成功的回调函数(控件调用)。
private function onRemoteResult(event:ResultEvent) : void
{
this.remoteSuccessHandler(event.result,event.currentTarget.name);
}
//当Remoting服务调用失败的回调函数(控件调用)。
private function onRemoteFault(event:FaultEvent) : void
{
this.remoteFault(event.fault.toString());
}
//当Remoting服务调用成功的回调函数(代码实现)。
private function onRemoteResult2(event : CUEvent):void
{
this.remoteSuccessHandler(event.Sender,event.CurrentTargetName);
}
//当Remoting服务调用失败的回调函数(代码实现)。
private function onRemoteFault2(event : CUEvent) : void
{
this.remoteFault(event.Sender.toString());
}
//当Remoting服务调用成功的处理。
private function remoteSuccessHandler(data : Object,fn : String):void
{
switch(fn)
{
case "DisplayHellow":
Alert.show(data as String,"DisplayHellow");
break;
case "SayHellowWorld":
Alert.show(data as String,"SayHellowWorld");
break;
case "GetUsers":
var userList : ArrayCollection = data as ArrayCollection;
this.dgUsers.dataProvider = userList;
break;
}
}
//当Remoting服务调用失败的处理。
private function remoteFault(desc:String):void
{
Alert.show(desc,"Remoting调用出错");
}
//清空DataGrid中的数据。
private function clearUsers() : void
{
this.dgUsers.dataProvider = null;
}
//链接到本人的博客。
private function getURL():void
{
flash.net.navigateToURL(new URLRequest("http://mrhgw.cnblogs.com"));
}
]]>
</mx:Script>
<mx:RemoteObject id="sampleRemoteObject"
destination="fluorine"
source="Hxw.Demo.FlashRemoting.Hellow"
showBusyCursor="true">
<!--这里是.NET中的方法,name = 方法名 -->
<mx:method name="DisplayHellow" result="onRemoteResult(event)" fault="onRemoteFault(event)"/>
<mx:method name="SayHellowWorld" result="onRemoteResult(event)" fault="onRemoteFault(event)"/>
<mx:method name="GetUsers" result="onRemoteResult(event)" fault="onRemoteFault(event)"/>
</mx:RemoteObject>
<mx:Panel layout="absolute" title="Flash Remoting Demo" fontSize="25" right="19" left="19" bottom="67" top="20">
<mx:TitleWindow x="28" y="29" width="290" height="116" layout="absolute" title="Display Hellow World" fontSize="15">
<mx:Button x="10" y="21" label="Call" id="btDisplayHellow" width="120" fontSize="15" click="callServer('DisplayHellow');"/>
</mx:TitleWindow>
<mx:TitleWindow layout="absolute" title="Say Hellow World" top="168" bottom="30" left="28" width="290" fontSize="15">
<mx:TextInput x="10" y="30" width="232" id="txtMessage" fontSize="13"/>
<mx:Button x="10" y="76" label="Call" id="btSayHellowWorld" width="120" fontSize="15" click="callServer('SayHellowWorld')"/>
<mx:Label x="10" y="0" text="Name:" fontSize="13" fontWeight="bold"/>
</mx:TitleWindow>
<mx:TitleWindow layout="absolute" title="Get Users" left="340" right="34" bottom="30" top="29" fontSize="15">
<mx:Button x="10" y="21" label="Call" id="btGetUser" width="120" fontSize="15" click="callServer('GetUsers')"/>
<mx:DataGrid id="dgUsers" fontSize="13" right="10" left="10" top="65" bottom="10">
<mx:columns>
<mx:DataGridColumn headerText="姓名" dataField="Name"/>
<mx:DataGridColumn headerText="性别" dataField="Sex"/>
<mx:DataGridColumn headerText="年龄" dataField="Age"/>
</mx:columns>
</mx:DataGrid>
<mx:Button x="148" y="21" label="Clear" id="btClear" width="120" fontSize="15" click="clearUsers()"/>
</mx:TitleWindow>
</mx:Panel>
<mx:HRule right="10" left="10" bottom="44" height="10"/>
<mx:LinkButton label="Powered by Hxw(http://mrhgw.cnblogs.com)" fontSize="15" fontStyle="italic" right="45" bottom="8" click="getURL();"/>
</mx:Application>
5. 注意。
在MXML Application的代码中,有代码:private var mode : int = 2;mode值为1表示以可视化组件方式访问远程服务器;mode值为2表示以编程方式访问远程服务器。
发表评论
-
控制连接数量和密码保护-flashcom教程 密码保护
2008-10-30 14:03 1234学习flashcom+学习英语(烂到死),无任何目的,本篇仅 ... -
AMF3 + AS 3.0 + ASP.NET 完整配置过程及源文件
2008-09-11 16:04 3576AMF3 + AS 3.0 + ASP.NET 完整配置过程及 ... -
FLEX结合FMS制作在线视频认证
2008-09-09 14:24 3826很多交友网站都具体在线视频认证能,如51.com。参考它的认 ... -
FMS Client AS 自訂類別物件傳遞
2008-08-27 15:04 1056透過與 FMS 連線,可以共享 SharedObject 物件 ... -
FMS 常常会用到 3个Call 和3个Send
2008-08-27 14:51 2197FMS 常常会用到 3个Call 和3个Send 关于Flas ... -
flex as3 fms相关的资料(转)
2008-08-27 14:36 1697FMS.rar FMS系列教程http://www.fs2 ... -
视频类
2008-08-27 09:21 1849Flash Player作为流媒体的表现形式之一,视频编码是其 ... -
一步一步学Flash Media Server
2008-08-26 18:03 4354从今天起,我们来学习一下 Flash Media Server ... -
再说说onSync,SharedObject
2008-08-26 16:44 1604* 最多人不懂的就是:那个list参数看代码: my_rso ... -
视频监控软件(2)---异步录像
2008-08-26 16:10 1380不好意思,让大家久等了!今天我要实现的一个功能是异步录像!先讲 ... -
视频监控软件(1)---FMS视频流共享
2008-08-26 16:07 2715呵呵!临近毕业了,本人选择的毕业设计题目是(基于B/S模式的 ... -
flash fms WebService 交互过程
2008-08-26 16:01 1726//flash客户端call服务器端的方法,服务器端调用WS的 ... -
游戏开发常用FMS类
2008-08-26 15:51 1452游戏开发常用FMS类 ... -
FLEX提高篇--------ShareObject对象详解
2008-08-26 14:23 1126ShareObject,顾名思义共享对象,而通常意义上的共享, ... -
客户端呼叫Flash Medis Server3服务端入门
2008-08-26 14:02 1468当你不仅仅只想用FLEX来做纯业务数据的管理时,或者当你的项目 ... -
FMS两种方式实现简易聊天室
2008-08-26 14:01 1684原理和代码都很简单,没什么好说的. 一:利用ShareOb ... -
FLEX提高篇---------FMS简易聊天室加强版
2008-08-26 13:37 1831今天写了下简易聊天室的加强版 , 其实功能也十分有很 , 不过 ... -
Flex连接FMS实现用户列表(使用SharedObject)
2008-08-26 13:33 39861.先在FMS的安装目录中添加自己的应用(例如我的目录D:\M ... -
FMS 教程(SharedObject)用户列表
2008-08-26 13:32 2930FMS实现用户列表,一般都是利用List组件,和SharedO ... -
Fms教程7 理解共享对象
2008-08-26 13:13 1921理解共享对象 共享对象 ...
相关推荐
Flex、.NET、Cairngorm 和 Fluorine 是四个在开发富互联网应用程序(RIA)时经常用到的技术。这个“Flex+.Net+Cairngorm+Fluorine的HelloWorld演示”旨在帮助开发者理解如何将这些技术整合在一起,实现跨平台的通信...
在文件名列表“flexdotnet”中,我们可以推测可能包含的资源有Flex和ASP.NET的示例代码、配置文件、教程文档或者是一个完整的项目案例。这些资源对于学习如何将Flex与ASP.NET集成,以及解决两者之间通信问题的开发者...
3. **FlourineFX**:这是一个用于.NET和Flex之间的实时双向数据绑定和Remoting框架。它使得Flex客户端能够与ASP.NET服务器进行高效的数据交换,实现了远程方法调用(RPC)和事件驱动通信。 在描述中提到的“本文档...
【Flex与Asp.Net通过Remoting方式进行通讯】是一种在客户端使用Flex进行富互联网应用开发,与服务器端基于Asp.Net的应用进行数据交换的技术。Remoting是远程方法调用的简称,它允许Flex客户端直接调用服务器上的.NET...
### Flex与ASP.NET通过Remoting交互实例 #### 一、引言 随着互联网技术的发展,跨平台应用的需求日益增长。Flex作为一种强大的RIA(Rich Internet Application)开发工具,因其丰富的用户体验和高效的开发流程受到...
【Flex与ASP.NET交互】指的是在开发Web应用时,使用Adobe Flex前端技术和Microsoft ASP.NET后端技术进行数据通信的方式。Flex是一种用于构建富互联网应用程序(RIA)的开发框架,而ASP.NET是.NET Framework的一部分...
这个项目结合了Flex的富互联网应用(RIA)开发能力与FluorineFX提供的.NET Remoting功能,使得Flex客户端能够与.NET服务器进行无缝通信。 在Flex中,FlashBuilder 4是一个强大的集成开发环境(IDE),专门用于创建...
本文旨在探讨如何利用Flex 3结合.NET平台进行Flash Remoting的开发。Flash Remoting是一种技术,它允许Flex应用程序与远程服务器上的服务进行交互,从而实现更复杂的客户端-服务器通信模式。这种开发方式能够充分...
在本教程中,我们将探讨如何使用Visual Studio 2010(VS2010)作为集成开发环境(IDE),结合FluorineFX这一开源的Adobe Flex到.NET的AMF Remoting框架,来实现Flex前端与ASP.NET后端的无缝通信。 首先,Flex 4是...
总结来说,FLEX与.NET的交互涉及多个步骤,包括设置开发环境、编写.NET后台代码、使用WebORB作为通信桥梁,以及在FLEX中编写ActionScript调用.NET服务。这种交互方式为构建动态、交互性强的Web应用程序提供了可能。
以上是关于使用Flex 3与.NET结合开发Flash Remoting应用的基本知识点,涵盖了开发环境的搭建、配置、功能定义以及服务器端代码的编写。理解并掌握这些概念和技术,可以帮助开发者创建高效、动态的RIA应用。
Flex是一种基于ActionScript编程语言和Flash Player运行时的开发框架,用于构建具有丰富用户体验的网络应用。而.NET Framework则是微软提供的一个全面的开发和运行环境,用于创建各种Windows应用和服务。两者之间...
Flex与.NET互操作是开发跨平台富互联网应用(RIA)时的一个重要技术组合,它允许基于Adobe Flex的前端用户界面与Microsoft.NET后端服务进行高效的数据交换和功能调用。Flex以其强大的图形用户界面和丰富的媒体支持,...
Flex与.NET交互是一种常见的跨平台应用开发场景,它允许基于Adobe Flex的前端应用程序与Microsoft .NET框架后端服务进行通信。这种交互使得开发者能够利用Flex的富互联网应用(RIA)特性与.NET的强大后端功能相结合...
**FlourineFX** 是一个开放源代码的.NET到Flash/Flex Remoting框架,它实现了AMF(Action Message Format)协议,使得Flex客户端可以高效地与.NET服务器进行数据交换。FlourineFX提供了类似于.NET的Remoting接口,...
本文将详细介绍如何通过Remoting方式实现Flex与ASP.NET之间的通讯。 #### 二、技术栈准备 为了实现Flex与ASP.NET的通讯,我们需要准备以下技术环境: 1. **Flex平台**:Adobe Flex Builder 3。这是Adobe提供的一...
Flash Remoting是使用AMF的实现,可以提供比SOAP更高的性能和更低的带宽使用。 3. **Flex SDK和.NET的集成工具**:如BlazeDS和LCDS(LiveCycle Data Services),它们提供了与.NET集成的解决方案,支持AMF通信和Web...
Flex_FluorineFx_ASP.NET 是一个技术组合,涉及到Adobe Flex、FluorineFx以及ASP.NET这三者在Web开发中的应用。这个主题主要关注如何利用这些技术创建富互联网应用程序(RIA)并实现客户端与服务器之间的高效通信。 ...