http://kss.cnblogs.com/archive/2005/12/16/298586.aspx
场景:使用FLASH做UI层,使用ASP.NET做DLL层;通过FLASH文件发送一数据,经DLL计算后返回显示在FLASH当中。
使用工具:VS2003和FLASH MX 2004
DEMO源码下载(148K)
详解:
1.UI层,FLASH件:新建一空FLASH文件,从工具箱中拉入一“输入文本”,命变量名为txt;再从组件中拉入一Label和Buttom,分别命名为lb和bt;再第一帧上插入以下AS代码
var param1:String;
var URLpreFix:String;
//设置服务器URL文件,根据实际自定义
URLpreFix = "http://localhost/flashtext/WebForm1.aspx";
bt.onRelease = function() {
//LoadVars 类是 loadVariables() 函数的替代方法,用于在 Flash 应用程序和服务器之间传输变量。
var myLoadVars = new LoadVars();
//txt是场景里面的一个文本变量
//把txt变量的值传给LoadVars类对象
myLoadVars.txt = txt;
//发送给服务器,可使用HTTP 协议的 GET 或 POST 方法。
myLoadVars.sendAndLoad(URLpreFix, myLoadVars, "post");
_root.lb.text="正在加载数据";
//得到服务器是否成功返回数据,success是成功标志,成功时返回true
myLoadVars.onLoad = function(success) {
//如果成功把lb的文本换成服务器返回的变量值
if (success) {
_root.lb.text = this.txt;
} else {
_root.lb.textt = "异常错误!";
}
};
};
var URLpreFix:String;
//设置服务器URL文件,根据实际自定义
URLpreFix = "http://localhost/flashtext/WebForm1.aspx";
bt.onRelease = function() {
//LoadVars 类是 loadVariables() 函数的替代方法,用于在 Flash 应用程序和服务器之间传输变量。
var myLoadVars = new LoadVars();
//txt是场景里面的一个文本变量
//把txt变量的值传给LoadVars类对象
myLoadVars.txt = txt;
//发送给服务器,可使用HTTP 协议的 GET 或 POST 方法。
myLoadVars.sendAndLoad(URLpreFix, myLoadVars, "post");
_root.lb.text="正在加载数据";
//得到服务器是否成功返回数据,success是成功标志,成功时返回true
myLoadVars.onLoad = function(success) {
//如果成功把lb的文本换成服务器返回的变量值
if (success) {
_root.lb.text = this.txt;
} else {
_root.lb.textt = "异常错误!";
}
};
};
2.DLL层,ASPX文件:新建一“asp.net web 应用程序”,位置为http://localhost/flashtext/,然后把转到HTML设计介面,把HTML代码删除掉,只保存以下这行代码(ASP.NET是采用codebehind设计,默认VS会自动产生一些HTML代码),
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="flashtext.WebForm1" %>
这个很重要,因为如果没有删除,等一下运行,服务器会返回这些HTML代码给UI层,使之产生错误。
3.DLL层,ASPX.cs文件:点开WebForm1.aspx.cs设计类文件,输入代码,用于Request FLASH送过来的数据而提交商业逻辑层处理,完整如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace flashtext
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string txt=Request["txt"];
testClass test=new testClass();
Response.Write("&&txt=" + test.getData(txt));
}
Web 窗体设计器生成的代码
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace flashtext
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string txt=Request["txt"];
testClass test=new testClass();
Response.Write("&&txt=" + test.getData(txt));
}
Web 窗体设计器生成的代码
}
}
4.DLL层,运行商业逻辑:新建一个新类,名为testClass.cs,用于整个demo简单的商业逻辑处理(在此你可以完全去处理与数据库相关处理等等),只返回一行数据,代码如下:
using System;
namespace flashtext
{
/// <summary>
/// testClass 的摘要说明。
/// </summary>
public class testClass
{
public testClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//方法getData()可以取得数据
public String getData(string param1)
{
//假设这里去读数据了
return "这是来自aspx返回的数据:"+param1;
}
}
}
namespace flashtext
{
/// <summary>
/// testClass 的摘要说明。
/// </summary>
public class testClass
{
public testClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//方法getData()可以取得数据
public String getData(string param1)
{
//假设这里去读数据了
return "这是来自aspx返回的数据:"+param1;
}
}
}
总结:如今FLASH与. net紧密结合,以上是一简单的FLASH与ASP.NET通信程序,关于FLASH与ASP.NET通信还有几种方法,有关文章可以参考Flash* and .NET* Integration Using ASP.NET
关于FLASH与winform结合的应用,参考前几天写过的demo:下载源码(要求VS2003和flash8)
发表于 2005-12-16 15:55 - - kss