Flash+asp.net制作FLASH首页新闻发布


在这首页新闻发布,会涉及到一些Flash与aspx文件之间接收和发送变量的基本原理。是动态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文件的部分了,代码如下:

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




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

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

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文件,做为添加新闻的工具。代码如下:

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



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

posted @ 2008-05-04 15:41  老白先生  阅读(1277)  评论(0编辑  收藏  举报