网页前端设计

http://www.86y.org
feedskyQQ邮箱

搜索文章

如何用Flash与ASP.NET(C#)交互通信

用声音读出全文关注我吧
 2011/3/22 9:19:33 阅读次数:4126

本人在做视频时发现视频只能通过传递真实的文件名才能播放。所以想加密码来播放这个视频。就找了一些资料来学习。以下是我在网上找的资料。但是不错。对我的帮助很大。所以把它写下来!

在这首页新闻发布,会涉及到一些Flash与aspx文件之间接收和发送变量的基本原理。是动态Flash的基础。
一、数据从ASP.NET到Flash
1、首先是在"图层1"(命名为"框架")上打好首页的新闻公布的框,这个是Flash的基础,我就不展开了,只要是框的样子便可。

2、然后,新建"图层2"(命名为"变量框")添加两个用来显示内容的动态文本。变量名分别设为news和time。一个用来显示新闻的内容,一个用来显示发布的时间。

3.新建一层action图层,此为本讲的重点,Flash动态交互后台的精髓,可以浓缩在此帧上,我会详细的讲解其中的action语句。

4、在帧上加入下列action:

mainnews = new LoadVars();//注1 
mainnews.load("data.aspx");//注2
mainnews.onLoad = function(success)
{//注3
if (success)
{
   news = mainnews.dnews; //注4
   time = mainnews.dtime;
}else
{
gotoAndPlay("fail"); //注5
}
}


注1:定义读取的函数
注2:定义了flash去哪里取数据,因为flash不能自身去数据库去取数据,而是要通过这个aspx文件来取数据.所以,从数据库里取数据的工作,其实是由后台的aspx文件负责的。Flash只是把aspx从数据库取出来的资料“拿来”,放在自已身上已显示出来。这里我打个比方:数据库好比硬盘,aspx文件是CPU,Flash是显示器.当aspx文件从数据库里拿出资料,再交给flash来显示给大家看。
注3:这个函数是实际的mainnews去读取data.aspx文件的行为。判断是否成功。
注4:如果成功,即成功收到来自aspx的变量,把mainnews取来的dnews变量赋值给news变量,也是我们前面设置过的动态文本。其中dnews其实是aspx里的变量,是mainnews接收到的。
注5:如果失败,即没有收到aspx给出的变量.去跳到帧标签为“fail”的部分。由于篇幅的关系。我也就不展开了。

Flash部分就这样完成了.然后便是后台aspx去数据库取变量的过程了。
这次我是用asp.net+access完成的,如果学过asp 或PHP的朋友可做适当的语法调整便可,因为原理是一样的。
5、新建一个data.mdb文件,即access的数据库(汗!总觉得自已在骗稿费似的)
创建一张名为main的表,添加字段"新闻"及字段"时间"。

6、接下来就是aspx文件的部分了,代码如下:

<%@ Page Language="C#" Debug="true"%>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<%
string StrCon="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("data.mdb");
string strSQL="SELECT * FROM main order by 编号 desc";
OleDbConnection MyConnection=new OleDbConnection(StrCon);
OleDbCommand myCommand=new OleDbCommand(strSQL,MyConnection);
OleDbDataReader myDataReader=null;
myCommand.Connection.Open();
myDataReader=myCommand.ExecuteReader();
myDataReader.Read();
Response.Write("dnews="+myDataReader["新闻"].ToString()); //注6
Response.Write("&dtime="+myDataReader["更新时间"].ToString());
myCommand.Connection.Close();
%>


注6:这段是一个很简单的读取数据库行为,学过asp.net应该都看的懂吧,会asp的朋友也应该不难理解。但aspx是怎么把取到的数据传给flash的呢?对!就是这句话,其实说穿了也很简单的。只不过在data.aspx上打出"dnews=****"。大家注意,"dnews"是不是很眼熟呢?其实它就是注4中"dnews",aspx把它打出来,flash自已去会来拿了。同理,dtime也是一样,不过在dtime前面要加一个"&"符号.因为它规定了,dtime是新的变量,如果第三个也是一样。其实就是变量间的分隔符。
EN,首页的新闻就这样完成了。

二、数据从Flash到ASP.NET
=========================================
光光读新闻怎么行,总不能一直通过手工修改数据库来加新闻吧。下面来做个在线添加新闻的东东吧。

1、还是打好框个输入文本,变量设为addnews.再加一个按钮

1、还是打好框个输入文本,变量设为addnews.再加一个按钮

2、添加一个动态文本,没"实例名称"为addresult,注意是实例名称而不是变量

3、在"确定"按钮上做如下Action:

on (release)
{
addn = new LoadVars(); //发送的变量
load_var = new LoadVars();  //接收的变量
addn.addnews = addnews; //注7
addn.sendAndLoad("addnews.aspx",load_var,"self"); //注8
load_var.onLoad = function(success)
{ //注9
if (success)
{
addresult.text = "添加成功";
}else
{
addresult.text = "添加失败";
}
}
}


注7:将addnews的变量赋值给add.addnews它会把addnews传给aspx文件。再通过aspx文件添加到数据库.
注8:add.sendAndLoad,这是一个add的行为,作用是发送add.addnews的变量给"addnews.aspx"这个文件.接着,aspx会给出是否成功操作的讯号.将这个讯号反传给load_var.这是我们在aspx文件需要加入的,后面在aspx文件部份,我会详细讲一下。
注9: load_var收取行为,如果添加成功就可收到讯号,addresult实例将会提示成功,反之提示失败。

4、数据库不变,还是用刚才那个。新建add.aspx文件,做为添加新闻的工具。代码如下:

<%@ Page Language="C#" Debug="true"%>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<%
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ Server.MapPath("data.mdb"));
OleDbCommand myCommand = new OleDbCommand("insert into main (新闻,更新时间) values (" + Request ["addnews"] + ", " + DateTime.Now.ToString() + ")" , myConnection); //注10
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
Response.Write("res=ok");  //注11
%>

注○10:也是一个简单的添加记录到mdb的aspx文件。关键在于Request ["addnews"],其实和aspx之间传递变量一样,通过Request函数aspx文件就可以接收到flash里addn.addnew的变量了。
注11:在aspx打出res=ok,让flash接收,便其知道操作成功.


大家有什么问题或技术上的想法可以在此与大家分享,也可以加入前端爱好者QQ群(141999928)一起学习进步:【幸凡前端技术交流群】
0

如果您觉得本文的内容对您的学习有所帮助,捐赠与共勉,支付宝(左)或微信(右)

阅读全文内容关闭