| 基于网页的留言板,我们已经见得很多,一个完整的留言板包括三个部分:1.  显示留言的页面(显示朋友们给我的留言)
 2.  填写留言的页面 (向后台提交信息)
 3.  数据库(用于保存后台信息)
 关于如何制作基于网页的留言板,不去多作解释,可以参考相关资料。
 就目前而言,FLASH是不可以直接操作象ACCESS, SQL, Mysql 等数据库的,他只能依靠ASP ,PHP ,JSP等其他的语言来实现数据的提交和查询。同时,FLASH还可以和XML对接,实现一些数据的操作。
 
 FLASH和ASP的交互:
 无论是ASP,PHP还是JSP等其他语言,原理大都一样,本人对ASP熟悉一点,所以以下只讲解FLASH与ASP的对联;
 查看FLASH的帮助文件,可以找到好几种的交互方法,
 本人使用最多的还是:
 loadVariablesNum(url:String, level:Number, [method:String]) : Void
 loadVariablesNum(参数1,参数2,参数3),参数1为变量所处位置的绝对或相对 URL,参数2为一个整数,指定 Flash Player 中接收这些变量的级别
 参数3为发送变量的 HTTP 方法,常用的有get和POST,推荐使用POST方法。
 例1:新建一个flash文件,拖一个可输入的文本框组件,取实例名为name_txt,再拖入一个按钮组件到场景中,取实例名为send_btn,在第一帧上写
       _root.send_btn.onRelease=function() {
 if(_root.name_txt.text!=)
 {
 myname=_root.name_txt.text;
 loadVariablesNum(write.asp,0,POST);
 }
 }
 那么,测试影片后,在文本框中,输入一个不为空的字符后,点击发送按钮后,输入的内容,将被提交到同一个文件夹中的名为write.asp中去!write.asp通过Request.Form(myname)的方法,就可以得到提交过来的数据,这里就简单的实现了 FLASH向ASP提交数据。
 接下来看看FLASH如何从ASP读数据:
 例2:新建一个flash文件,拖一个动态文本框组件到场景中,取实例名为read_txt,在第一帧上写
      loadVariablesNum(read.asp,0,POST); _root.read_txt.text=myname;
      理论上测试后,read_txt文本框会显示read.asp提交过来的myname中的值,但是有时候不能够保持实时性,常常得不到数据,相信也有许多朋友会遇到同样的问题,这里讲两个小技巧。
 
 技巧一:
 首先可以在FLASH初一个变量为 active_old=0; 在ASP中Response.Write(active_new=1)
 那么FLASH里可以写上:
  active_old=0; _root.onEnterFrame=function()
 {
 loadVariablesNum(read.asp,0,POST);
 _root.active_old=active_new;
 _root.read_txt.text=myname;
 if(_root.active_old==1)
 {
 delete _root[onEnterFrame];
 }
 
 }
     此段代码表示,开始FLASH会不断地访问read.asp,read.asp会把变量active_new传递给FLASH中的_root.active_old,当_root.active_old改变后,将停止事件。
 
 技巧二:
 使用loadVariablesNum(read.asp?temp=+random(10000),0,POST);的方式,在每次访问时会得到最新的数据,不会再使用缓存中的信息。
 
 关于ASP中的代码如何书写,不再多作解释,重点讲解FLASH如何准确和及时得到数据库里的数据,达到我们期望的功能。
 
 [备注]
 我们常会遇到,中文提交到数据库后,数据显示出来为乱码,主要是由于编码的原因,只要在ASP中写上   codePage=”936”%>
 
 FLASH和XML的交互
 
 应该来说,用XML和FLASH来交换数据,还是不错的选择,首先,XML可以根据我们的需要,很清晰地定义其结构,FLASH也可以很容易去解释信息。
 
 例3:
 myxml=new XML();    //创建一个XML新对象 myxml.ignoreWhite=true; //空白忽略
 myxml.load(“music.xml”);  //加载同目录下的music.xml文件
 myxml.onLoad=function(success)
 {
 if(success)
 {
 ReadXML();
 trace(“加载成功”);
 }else
 {
 trace(“加载失败”);
 }
 }
 以上的代码就能够检测xml是不是加载到FLASH中去了。以下是个简单的XML文件
           name=”song1” url=”mp3/01.mp3”  /> name=”song2” url=”mp3/02.mp3”  />
 name=”song3” url=”mp3/03.mp3”  />
 XML加载进来后,我们需要做的是去解析和提取数据,为我们所用。以上ReadXML()函数就用来读数据。
   Function  ReadXML() {
 myArray=myxml.firstChild.childNodes;  //把myxml的第一个子结点所有的数据以数组的方式给myArray
 totalNumber= myArray.length;  //
 for( i=0; i< totalNumber ; i++ )
 {
 arr_1= myArray[i].attributes.name;
 arr_2=myArray[i].attributes.url;
 }
 }
 现在,我们可以得到的结果是,在数组arr_1中保存了所有歌曲的名字,在数组arr_2中保存了所有歌曲的路径,我们就可以使用loadSound()等方法制作一个自己的播放器了!
 
 XML与ASP
 
 Xml和ASP各有各的优势,xml数据结构很清楚,但是没有ASP灵活,而且还可以查询和修改数据库,所以想一想,如果用ASP来动态生成xml,那么我们就可以两全其美了!
 这里需要一点ASP知识!
 以下一段实现ASP生成指定的XML。
 response.ContentType=text/xml if request.QueryString(Page)<> then
 Page=Cint(request.QueryString(Page))
 else
 Page=1
 end if
 pgsz=5
 %>
 DataBaseName=Manage/Message/Message.mdb
 
 Set Conn = Server.CreateObject(ADODB.Connection)
 Conn.Open DRIVER={Microsoft Access Driver (*.mdb)};DBQ= & Server.MapPath(DataBaseName)
 set rs=server.CreateObject(Adodb.recordset)
 rs.open Select * from Message order by addtime desc,conn,1,1
 if not rs.eof then
 rs.pagesize=pgsz
 Rs.Absolutepage=Page
 %>
 Pagecount= PageSize= Recordcount=>
 
 i=0
 do while not rs.eof and i
 %>
 Sex= Email= Time=-- Homepage=  Title= Content= Reply=/>
 
 i=i+1
 rs.movenext
 loop
 %>
 
 end if
 rs.close
 set rs=nothing
 Conn.Close
 set Conn=Nothing
 %>
 [备注]
 我们常会遇到,XML中如果有中文,将会成乱码,所以只要在flash中写上
 System.useCodePage=true,就OK了!
 以上只是些基础知识,下面具体讲解留言板的制作和关键: ![src=http://www.eqing.com.cn/Article/UploadFiles/200605/20060524152016304.gif]() flash.rar 效果地址:http://www.u-lee.com/bbs.htm
 是我的第一个版本的留言板
 留言板主要包括以下功能:游戏,留言(提交留言),播放音乐(mp3),管理功能(删除留言)
 使用到的技术:AS,ASP,XML, database
 需要解决的技术问题:
 1.留言内容的分页显示,
 2,使用List组件显示歌曲列表,列表使用XML动态更新,
 3,使用ScrollPan组件存放留言内容,当有新的留言内容产生时,自动调整位置,最新留言置顶,
 4,加载声音文件,如何实现播放完一首歌曲后,自动换到下一首,
 5,删除留言自动调整页面。
 原理是把所有的数据用ASP提取出来,然后由FLASH来判断,使用split方法,把数据存到数组里去,需要时,再去取,这样有一个弱点,就是使用起来,分页时,会把不需要的数据也调用了进来,不是很科学! 接下来讲的是改进后的版本。原理是用ASP动态生成XML,当分页时,点下一页时,继续访问ASP,从新生成第二页的XML,都由FLASH访问XML,来加载数据,由ASP访问数据库,读和写数据。
 V2.0 版本中FLASH原文件共有3个,leave.swf 只是个容器,把write.swf和leave.swf 加载到里面去。
 write.swf为提交数据,read.swf 为读数据.
 leave.swf :
 两个按钮 , 一个 查看留言 btn1   一个我要留言.btn2
 btn1:   _parent.mess.loadMovie(read.swf);  btn2:   _parent.mess.loadMovie(write.swf);
 其中还有, 上一页 和下一页  以及一个下拉条 主要代码:
 xiala.onEnterFrame = function() {                //下拉的位置,控制着留言内容mess的位置  if (ggg == 1) {
 mess._y = 28;
 } else {
 y = xiala.btn._y;
 yy = y/dist1;
 mess._y = b_2*yy+30;
 }
 };
 write.swf
  (图片见word文档) 
 主要代码:
 System.useCodepage = true;    //支持中文编码  this_
 |