FLASH留言板教程--------------------------------------------------------------------------------------------------------------------首先感谢大家下载和使用我的留言板!同时希望和所有爱好FLASH朋友一起进步,一起享受成功!Name:九五之尊OICQ:55346752Email:ljg998@gmail.comHomepage:留言板,受到许多朋友的支持,但是因为一直忙于工作,今天终于抽出时间写写关于制作FLASH留言板的心得!FLASH留言板,从我02年开始学习FLASH时,网上就出现了许多不同层次的教程,对于一个初学者来说,我们总是希望向学数学一样,先告诉我们1+1=2,我们才会知道2+2=4。同样,学FLASH,得先学理论,才能够作出精美和功能强大的FLASH作品。基于网页的留言板,我们已经见得很多,一个完整的留言板包括三个部分: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]):VoidloadVariablesNum(参数1,参数2,参数3),参数1为变量所处位置的绝对或相对URL,参数2为一个整数,指定FlashPlayer中接收这些变量的级别参数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中写上%@language=”VBScript”codePage=”936”%FLASH和XML的交互应该来说,用XML和FLASH来交换数据,还是不错的选择,首先,XML可以根据我们的需要,很清晰地定义其结构,FLASH也可以很容易去解释信息。例3:myxml=newXML();//创建一个XML新对象myxml.ignoreWhite=true;//空白忽略myxml.load(“music.xml”);//加载同目录下的music.xml文件myxml.onLoad=function(success){if(success){ReadXML();trace(“加载成功”);}else{trace(“加载失败”);}}以上的代码就能够检测xml是不是加载到FLASH中去了。以下是个简单的XML文件-------------------------------------------------------------------------------------------------------------------------------------?xmlversion=1.0?musiclistname=”song1”url=”mp3/01.mp3”/listname=”song2”url=”mp3/02.mp3”/listname=”song3”url=”mp3/03.mp3”//musicXML加载进来后,我们需要做的是去解析和提取数据,为我们所用。以上ReadXML()函数就用来读数据。FunctionReadXML(){myArray=myxml.firstChild.childNodes;//把myxml的第一个子结点所有的数据以数组的方式给myArraytotalNumber=myArray.length;//for(i=0;itotalNumber;i++){arr_1=myArray[i].attributes.name;arr_2=myArray[i].attributes.url;}}现在,我们可以得到的结果是,在数组arr_1中保存了所有歌曲的名字,在数组arr_2中保存了所有歌曲的路径,我们就可以使用loadSound()等方法制作一个自己的播放器了!XML与ASPXml和ASP各有各的优势,xml数据结构很清楚,但是没有ASP灵活,而且还可以查询和修改数据库,所以想一想,如果用ASP来动态生成xml,那么我们就可以两全其美了!这里需要一点ASP知识!以下一段实现ASP生成指定的XML。---------------------------------------------------------------------------------------------------------------------------------------%response.ContentType=text/xmlifrequest.QueryString(Page)thenPage=Cint(request.QueryString(Page))elsePage=1endifpgsz=5%?xmlversion=1.0encoding=gb2312?Message%DataBaseName=Manage/Message/Message.mdbSetConn=Server.CreateObject(ADODB.Connection)Conn.OpenDRIVER={MicrosoftAccessDriver(*.mdb)};DBQ=&Server.MapPath(DataBaseName)setrs=server.CreateObject(Adodb.recordset)rs.openSelect*fromMessageorderbyaddtimedesc,conn,1,1ifnotrs.eofthenrs.pagesize=pgszRs.Absolutepage=Page%ContentRecordcount=%=rs.recordcount%PageSize=%=pgsz%Pagecount=%=rs.Pagecount%CurPage=%=Page%%i=0dowhilenotrs.eofandipgsz%ItemName=%=rs(Name)%Sex=%=rs(Sex)%Email=%=rs(Email)%Time=%=year(rs(Addtime))%-%=month(rs(Addtime))%-%=day(rs(Addtime))%Homepage=%=rs(Homepage)%Title=%=rs(Title)%Content=%=rs(Content)%Reply=%=rs(Reply)%/%i=i+1rs.movenextloop%/Content%endifrs.closesetrs=nothingConn.ClosesetConn=Nothing%/Message[备注]我们常会遇到,XML中如果有中文,将会成乱码,所以只要在flash中写上System.useCodePage=true,就OK了!---------------------------------------------------------------------------------------------------------------------------------------以上只是些基础知识,下面具体讲解留言板的制作和关键:是我的第一个版本的留言板,原理是把所有的数据用ASP提取出来,然后由FLASH来判断,使用split方法,把数据存到数组里去,需要时,再去取,这样有一个弱点,就是使用起来,分页时,会把不需要的数据也调用了进来,不是很科学!接下来讲的是改进后的版本。原理是用ASP动态生成XML,当分页时,点下一页时,继续访问ASP,从新生成第二页的XML,都由FLASH访问XML,来加载数据,由ASP访问数据库,读和写数据。V2.0版本中FLASH原文件共有3个,leave.swf只是个容器,把write.swf和leave.swf加载到里面去。write.swf为提交数据,read.swf为读数据.-----------------------------------------------