FLASH留言板教程.doc_第1页
FLASH留言板教程.doc_第2页
FLASH留言板教程.doc_第3页
FLASH留言板教程.doc_第4页
FLASH留言板教程.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FLASH留言板教程-首先感谢大家下载和使用我的留言板!同时希望和所有爱好FLASH朋友一起进步,一起享受成功!Name: 九五之尊OICQ: 55346752Email: Homepage: -自从在闪吧发布我的第一个FLASH留言板,受到许多朋友的支持,但是因为一直忙于工作,今天终于抽出时间写写关于制作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为一个整数,指定 Flash Player 中接收这些变量的级别参数3为发送变量的 HTTP 方法,常用的有get和POST,推荐使用POST方法。例1:新建一个flash文件,拖一个可输入的文本框组件,取实例名为name_txt,再拖入一个按钮组件到场景中,取实例名为send_btn,在第一帧上写 _root.send_btn.onRelease=function() if(__txt.text!=) myname=__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 _rootonEnterFrame; 此段代码表示,开始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中写上 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(“加载成功”);elsetrace(“加载失败”);以上的代码就能够检测xml是不是加载到FLASH中去了。以下是个简单的XML文件- XML加载进来后,我们需要做的是去解析和提取数据,为我们所用。以上ReadXML()函数就用来读数据。 Function ReadXML()myArray=myxml.firstChild.childNodes; /把myxml的第一个子结点所有的数据以数组的方式给myArraytotalNumber= myArray.length; /for( i=0; i totalNumber ; i+ ) arr_1= myA; arr_2=myArrayi.attributes.url;现在,我们可以得到的结果是,在数组arr_1中保存了所有歌曲的名字,在数组arr_2中保存了所有歌曲的路径,我们就可以使用loadSound()等方法制作一个自己的播放器了!XML与ASPXml和ASP各有各的优势,xml数据结构很清楚,但是没有ASP灵活,而且还可以查询和修改数据库,所以想一想,如果用ASP来动态生成xml,那么我们就可以两全其美了!这里需要一点ASP知识!以下一段实现ASP生成指定的XML。-%response.ContentType=text/xmlif request.QueryString(Page) thenPage=Cint(request.QueryString(Page)elsePage=1end ifpgsz=5%Content Recordcount= PageSize= Pagecount= CurPage=%i=0do while not rs.eof and iItem Name= Sex= Email= Time=- Homepage= Title= Content= Reply=/备注 我们常会遇到,XML中如果有中文,将会成乱码,所以只要在flash中写上System.useCodePage=true,就OK了!-以上只是些基础知识,下面具体讲解留言板的制作和关键:/forums/1810604/ShowPost.aspx是我的第一个版本的留言板,原理是把所有的数据用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 主要代码:System.useCodepage = true; /支持中文编码this_mc._visible = false; / this_mc 为一个填写错误提示的影片剪辑this_sex = 先生; /默认sex为先生function clean() / 点取消按钮时,清空所有数据this_name.text = ;this_homepage.text = ;this_email.text = ;this_title.text = ;this_content.text = ;function emailcheck(str) /检测email填写是否正确,判断是否有 和 点at = false;dot = false;for (i=0; istr.length; i+) if (str.charAt(i) = ) at = true;if (str.charAt(i) = .) dot = true;return (at & dot);clean_btn.onRelease = function() clean();send_btn.onRelease = function() /提交按狃代码if (this_name.text = ) this_mc._visible = true;this_mc.tishi.text = 姓名不能为空!; else if (emailcheck(this_email.text) = false) this_mc._visible = true;this_mc.tishi.text = 请正确填写邮件!; else if (this_title.text = ) this_mc._visible = true;this_mc.tishi.text = 主题不能为空!; else if (this_content.text = ) this_mc._visible = true;this_mc.tishi.text = 内容不能为空!; else myName = this_name.text;myHomepage = this_homepage.text;if (myHomepage = ) myHomepage = ;myEmail = this_email.text;myTitle = this_title.text;myContent = this_content.text;mySex = this_sex;trace(myName);trace(myHomepage);trace(myEmail);trace(myTitle);trace(myContent);trace(mySex);loadVariablesNum(write.asp, 0, POST); / 如果填写的数据全部合格,将提交数据到write.asp_parent.page_num = 1;_parent.prev_btn._visible = false;_parent.txt._visible = true;_parent.xiala._visible = true;_parent.next_btn._visible = true;_parent.btn2.gotoAndStop(1);_parent.btn1.gotoAndStop(2);_parent.ggg = 0;_parent.mess.unloadMovie();_parent.mess.loadMovie(read.swf); /提交后,自动转入显示留言的页面;listenerObject_1 = new Object(); / 侦听事件,如果选择了先生则this_sex = 先生;listenerObject_1.click = function(eventObject) this_sex = 先生;listenerObject_2 = new Object();listenerObject_2.click = function(eventObject) / 侦听事件,如果选择了先生则this_sex = 女士;this_sex = 女士;sex_1.addEventListener(click, listenerObject_1);sex_2.addEventListener(click, listenerObject_2);stop();-read.swf以上是一个空影片剪接,用于放置留言信息, 想想假如我想每页显示5个,那么 我需要复制5个这样的影片,放到场景中, 再把从xml中的提取出来的数据注入到每个影片中的 1-5个 动态文本框中去. 如何读数据,上面已经讲过了, 现在 只要把数据赋给动态文本框中就可以了. 需要注意的是,我们选用的是自定义的文本框,首先确保他是多行的并且是自动换行的,所以我们考虑的是,文本框的高度必须根据内容的多少来显示。以下代码就可以实现:scroll_1 = this.message_load_mcmessage_mc+i.content_txt.maxscroll; /取得内容的最大滚动量this.message_load_mcmessage_mc+i.content_txt._height = scroll_1*18; /一行文本,如果是12号字大约是18px,那么*18后,就可以得到content_txt._height 了回复同样也是这样另外,低色的高度也要根据上面内容来确定。this.message_load_mcmessage_mc+i.back_2._y= this.message_load_mcmessage_mc+i.back_1._y+this.message_load_mcmessage_mc+i.back_1._height+2/得到back_2._y 坐标。-完整的代码:stop();System.useCodepage = true;/现在是第几页,由_root里的this_nowpage来传给它,在场景中定义this_nowpage = _parent.page_num;temp = 0;read_xml = new XML();read_xml.ignoreWhite = true;read_xml.load(DataSource.asp?Page=+this_nowpage+&+Math.random(10000); / 刷新DataSource.asp,保证不使用缓存里的数据read_xml.onLoad = function(success) if (success) trace(OK);parseXML(); else trace(加载失败);function parseXML() name_arr = new Array();sex_arr = new Array();email_arr = new Array();time_arr = new Array();homepage_arr = new Array();title_arr = new Array();content_arr = new Array();reply_arr = new Array();total_arr = new Array();total_arr = read_xml.firstChild.firstChild.childNodes;/-总记录数-totalRecord = read_xml.firstChild.firstChild.attributes.Recordcount;/-总页数-totalPage = read_xml.firstChild.firstChild.attributes.Pagecount;_parent.total_1 = totalPage;/-当前页数-now_Page = read_xml.firstChild.firstChild.attributes.CurPage;/-每页显示记录数-page_size = read_xml.firstChild.firstChild.attributes.PageSize;trace(totalRecord);trace(totalPage);trace(now_Page);for (i=0; itotal_arr.length; i+) name_arri = total_arri.attributes.Name;sex_arri = total_arri.attributes.Sex;email_arri = total_arri.attributes.Email;time_arri = total_arri.attributes.Time;homepage_arri = total_arri.attributes.Homepage;title_arri = total_arri.attributes.Title;content_arri = total_arri.attributes.Content;reply_arri = total_arri.attributes.Reply;showmessage();function showmessage() _parent.txt._visible = true;_parent.txt.total_txt.text = 一共有+totalRecord+记录;_parent.txt.nowpage_txt.text = this_nowpage+/+totalPage;for (i=0; itotal_arr.length; i+) this.message_load_mc.attachMovie(message_mc, message_mc+i, i);this.message_load_mcmessage_mc+_txt.text = name_arri+(+sex_arri+);this.message_load_mcmessage_mc+i.title_txt.text = title_arri;this.message_load_mcmessage_mc+i.content_txt.text = content_arri;this.message_load_mcmessage_mc+i.reply_txt.text = reply_arri;trace(this.message_load_mcmessage_mc+i.reply_txt.text);this.message_load_mcmessage_mc+i.time_txt.text = time_arr0;this.message_load_mcmessage_mc+i.back_2._y = this.message_load_mcmessage_mc+i.back_1._y+this.message_load_mcmessage_mc+i.back_1._height+2;scroll_1 = this.message_load_mcmessage_mc+i.content_txt.maxscroll;this.message_load_mcmessage_mc+i.content_txt._height = scroll_1*18;this.message_load_mcmessage_mc+i.back_2._height = this.message_load_mcmessage_mc+i.content_txt._height+15;scroll_2 = this.message_load_mcmessage_mc+i.reply_txt.maxscroll;this.message_load_mcmessage_mc+i.reply_txt._height = scroll_2*18;if (this.message_load_mcmessage_mc+i.reply_txt.text = ) this.message_load_mcmessage_mc+i.back_3._height = 30; else this.message_load_mcmessage_mc+i.back_3._height= this.message_load_mcmessage_mc+i.reply_txt._height+10;this.message_load_mcmessage_mc+i.ba

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论