| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > Flash辅助软件 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

flashremoting实践(二)-hello world for .net           

flashremoting实践(二)-hello world for .net

作者:佚名 来源:闪吧 作者: lwanchen 更新:2007-1-13 20:41:29 错误报告 我要投稿

下面来教大家在.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,谢谢

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。