您的位置: 首页 > 技术文档 > 多媒体制作 > flash remoting 实践
浅析三维全景 回到列表 Flash鼠绘着色入门教程
 flash remoting 实践

作者:lwanchen 时间: 2004-11-16 文档类型:原创 来自:蓝色理想

第 1 页 配置篇
第 2 页 .net环境下的 hello world

下面来教大家在.net环境下写最简单的hello world,好了闲话少说,现在开始:

这里我假设你已经看过我第一篇关于配置的文章,并已经成功的执行了前两个例子。

1.首先请大家进入你的虚拟目录c:\Inetpub\wwwroot,在这里你会看到flashremoting文件夹,也就是例子文件的文件夹,在这个目录新建一个myASPApp文件夹,这里我们开发的程序就放到这个文件夹下,在这里我们新建一个名为bin的目录,建好之后请回到c:\Inetpub\wwwroot,进入flashremoting目录,把这里的bin目录下的flashgateway.dll和frconfig.txt文件拷贝到myASPApp下的bin目录里,然后在把flashremoting下的gateway.aspx和web.config两个文件拷贝到myASPApp目录下,在这里我不具体介绍为什么我们要把这些文件拷贝到相应的目录里,如果你想了解请看自带的帮助文件remoting支持4种.net技术分别是:

asp.net
ado.net data-binding
web services
assembly(with the .dll extension)

要让我们写的remoting程序能够找到asp.net页你就必须把asp.net页放到虚拟目录下或者是子目录下,也就是我们为了区分我们要开发的项目所以我们在虚拟目录下建了一个myASPApp文件夹,我们把我们需要的asp.net放到这里就可以了。好了,下面我们开始写程序了。

2.在myASPApp下建立一个.aspx文件,也就是asp.net文件取名为helloWorldNET.aspx
首先要把你用的是什么语言做声明,我这里用的是vb.net写法是

<%@ Page language="vb" debug="true" %>

为了从flash应用程序中调用数据,或者在asp.net页面返回结果给flash,你要在asp.net页面上使用flash remoting定制服务器端控制这个控制是又flashgateway.dll所提供的,也就是拷贝到bin目录里的flashgateway.dll,你必须在程序代码之前首先注册这个控制,方法是这段代码

<%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %>

这个注册说明了建立标识符前缀Macromedia,和命名空间FlashGateway,以及提供功能的动态连接库文件flashgateway注册之后你就可以使用它传递数据给flash应用程序了比如这样

<Macromedia:Flash ID="Flash" runat="server">
Hello from .NET!
</Macromedia:Flash>

这里我个人认为,在<Macromedia:Flash ID="Flash" runat="server"></Macromedia:Flash>之间写的任何代码都会被做为返回值传递给flash,比较像.net中的response.wirte()和java中的System.out.print();说到这里大家可能已经会写这个程序了,不错上面的代码就是hello world程序,但是这里我不提倡大家这样写,还有另一种写法,在注册完之后直接写这样的代码<Macromedia:Flash ID="Flash" runat="server"/>,然后在下面我们用asp.net的正常写法

<script runat="server">
sub page_load(sender as object,e as eventargs)
flash.result="hello world!!!"
end sub
</script>

这里我们用page_load也就是页面加载时所执行的程序,这样,当这个页面加载时就会把hello world直接传递给flash对象的result方法,这是我们在flash里接收的值的方法,好了asp.net页面已经写完了,下面看一下完整的代码

<%@ Page language="vb" debug="true" %>
<%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %>
<Macromedia:Flash ID="Flash" runat="server"/>
<script runat="server">
sub page_load(sender as object,e as eventargs)
flash.result="hello world!!!"
end sub
</script>

3.下面是我们所要写的flash端的代码,这里首先要把remoting类导入到flash中,方法很简单选择菜单栏,窗口--其他面板--公用库--remoting,这时你会看到界面右边出现remoting的库面板,把RemotingClasses拖到场景中在删除,这样RemotingClasses类就会被添加到我们的文件的库里面,程序执行的时候它就被导入到程序里了,如果你想在NetConnection Debugger面板里调试程序,那么你需要把remoting类库里的RemotingDebugClasses也拖到场景中,好了现在开始写as程序

4.拖一个textinput组件到主场景中,取名为messageDisplay_txt,然后选择主场景第一真打开动作面板,首先需要导入一些需要的类代码如下

import mx.remoting.Service;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;

之后第一步我们要连接服务器所以创建一个service对象代码如下:

var howdyService:Service = new Service("http://localhost/myASPApp/gateway.aspx", null, "myASPApp", null, null);

第一个参数http://localhost/myASPApp/gateway.aspx首先指定到虚拟目录下的myASPApp下的gateway.aspx文件,他做一个转向的作用,必须这么写,第三个参数需要指定你的asp.net页在什么地方,这里因为我把helloWorldNET.aspx放到myASPApp目录下所以直接写myASPApp就可以了,但是如果你要把helloWorldNET.aspx放到myASPApp的其他子目录下例如,helloworld目录下,那么你就要写成myASPApp.helloworld。

第二步呼叫服务器端的helloworld方法

var pc:PendingCall = howdyService.helloWorldNET();

这里你会看到呼叫的服务器端的方法其实就是asp.net页helloWorldNET.aspx的名字

第三步需要写呼叫方法后服务器返回的结果和或者是失败的方法

pc.responder = new RelayResponder(this, "serviceFunctionName_Result", "serviceFunctionName_Fault");
这里如果呼叫成功那么执行我们自定义的serviceFunctionName_Result方法,如果呼叫失败那么执行我们自定义的serviceFunctionName_Fault方法。
然后我们要写自定义的两个方法,首先是serviceFunctionName_Result方法,代码如下:

function serviceFunctionName_Result(result:ResultEvent) {
    // display successful result
    messageDisplay_txt.text = result.result;
}

这里当呼叫成功后会把服务器端的结果传递给result对象,result对象的result方法就是从服务器端得到的值,然后我们把他放到messageDisplay_txt里显示
当呼叫失败时flash会调用serviceFunctionName_Fault方法,代码如下:

function serviceFunctionName_Fault(fault:FaultEvent) {
    //display fault returned from service
    messageDisplay_txt.text = fault.fault.faultstring;
}

失败的信息,会传递给fault对象,然后用messageDisplay_txt来显示出来,好了这个程序已经写完了,完整的代码如下:

import mx.remoting.Service;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;
// connect to service and create service object
var howdyService:Service = new Service("http://localhost/myASPApp/gateway.aspx", null, "myASPApp", null, null);
// call the service helloWorld() method
var pc:PendingCall = howdyService.helloWorldNET();
// tell the service what methods handle result and fault conditions
pc.responder = new RelayResponder(this, "serviceFunctionName_Result", "serviceFunctionName_Fault");
function serviceFunctionName_Result(result:ResultEvent) {
    // display successful result
    messageDisplay.text = result.result;
}
function serviceFunctionName_Fault(fault:FaultEvent) {
    //display fault returned from service
    messageDisplay.text = fault.fault.faultstring;
}

看完之后大家是不是觉得调用.net方法其实很简单,不错,as代码方面其实写法比较固定,只要正确的找到gateway.aspx文件引导,然后正确的找到你所写的asp.net页,应该就没有什么问题。在这里我注重把as2.0的写法告诉大家,并没有对每一个对象例如Service,PendingCall等对象做细致的讲解,如果你想仔细的认识这些对象那么请看相关资料

下一节将会向大家介绍java环境下的hello world程序,我会努力的已最快速度写出来的,由于时间仓促,所以难免有写的不对的地方,如果写错了,请大家指正,如果想与我讨论remoting方面的问题的请与我联系我的qq:22339146,msn:lwanchen@hotmail.com。

如要转载请标明作者lwanchen,谢谢!!!

出处:蓝色理想
责任编辑:蓝色

上一页 配置篇 下一页

◎进入论坛Flash专栏版块参加讨论

作者文章
flash remoting 实践
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2