最近更新 / 特别专题 / 我要上传 / 设为首页
满足眼睛的需求

频道精选


FlashMX数据库操作完全攻略-上部-第5卷

2007-06-05 来源:xuezhishi.com   内容报错                        

       经过我们几天的讨论,现在大家如果已经看完前4卷的话,应该已经可以轻松的搞定文本文件和ASP等文件与FLASH的数据传递方法了,今天我们来讨论怎样对对一定规模的数据进行有效的整理和安排。  
 
       在数据的整理我主要是用两种方法配合进行,分别是用Array和String这两个对象,因为我们在以后的历程中可能需要在FLASH中实现如小到留言板,大到论坛或者信息平台的功能,所以在FLASH中对数据的整理是非常重要的技术和技巧。我们在网页的功能编写中最最常见的应该算是列表之类的功能,我们今天的讨论实例将以实现软件下载系统的基本功能为主。软件下载系统相应大家都是经常接触的了,由于篇幅和时间的原因,我们在这里仅讨论软件下载系统的核心部分,其相关功能是:  
 
       我们还是用ACCESS数据库为例,在数据库中存储一系列软件信息,如软件名称,软件版本,推荐度,发布时间,软件介绍和下载链接等,然后我们将在FLASH中建立一个列表,并以每页10条记录的形式来显示这个数据库中的记录,并允许用户通过点击开始下载,这样的话,我们首先要写一个ASP文件(仅仅一个ASP文件就足够了),我们将在这个ASP文件中编写出按照指定的参数向FLASH提供第几页(如每页10条记录)的数据(其中包括每条记录的所有字段),也就是说,我们将每页的记录从ASP发向FLASH,然后再经过FLASH整理后,显示在列表上,这样的话,我们在每次从ASP发出数据时,因为需要以“变量名=值”的形式输出,所以在ASP部分的数据输出形式上是有两种风格的,我们以软件系统的数据为例讲解ASP部分的这两种数据整理风格:  
       第一种:我比较喜欢这一种,呵呵  
 
           变量名=软件1,软件2,软件3,软件4,软件5,软件6,软件7,软件8,软件9,软件10  
 
       第二种:我不怎么喜欢这一种,不过有很多人却喜欢这样干的  
           变量名0=软件数量&变量名1=软件1&变量2=软件2&变量3=软件3&变量4=软件4&变量5=软件5&变量6=软件6&变量7=软件7&变量8=软件8&变量9=软件9&变量10=软件10  
 
       两种风格之间其实也没有太明显的界线,呵呵,是吧,看各位的风格爱好了,当然也可以两种相结合,可能有部分人看到这里会纳闷,我现在在说些什么呢,怎么看不大明白呢?其实说白了也没什么,只是讨论一下我们每页要发出的数据怎样安排比较好,第一种的风格的实例如下:  
 
       aspRect=Foxmail,4.2,Windows,2003,Office,2003,Winamp,3.0  
       而另一种风格就如下所示:  
       softcount=4&softname1=foxmail&softname2=windows&softname3=office&softname4=winamp&softver1=4.2&softver2=2003&softver3=2003&softver4=3.0  
 
       各位看完前4卷的朋友应该明白我现在在说什么了吧,如果仍有不清楚的请认真的从第1卷开始看,不许偷懒(这是为大家好,当然我也可以省些口水了)  
 
       说到这里我们已经讲到了前面两种数据输出的风格,接下来我们将讨论FLASH部分的处理,关于FLASH部分的处理嘛,我只有推荐一种,那就是引用对象数组来存这些数据,对于对象数组的基本操作,大家可以参考FLASHMX帮助中的Array对象,当然,我们还是有必要举下面几个例子:  
 
         
       如我们要在一个对象数组中保存一条软件信息的数据记录  
       SoftDatas=new  Array();  
       SoftDatas.push({name:  "Foxmail",  ver:  4.2,  Size  "2MB",Note:  "这是一个邮件收发软件"});  
 
       这样的话,我们在需要引用某一个软件的相关信息时,我们可以在FLASH中写如下代码来引用,如我们要在一个动态文本域中显示这个软件的名称:  
 
       txtBox.text=SoftDatas[0].name;        //0是索引咯,各位有语言基础的就不用我说了,没语言基础的同志嘛,看样子得多看看书了  
 
       对了,说到这里,我们得向大家强调一下FLASH中关于变量和对象的基本使用  
 
       变量和对象在FLASH中分两种,一种是本地变量或本地对象,另一种是全局变量或全局对象  
       关于本地变量和对象的声明嘛,就是普通的声明方式,(其实FLASHMX  6当中可以不用声明)如:  
       var  a="abc";            //声明一个变量,名称是a,初始值是"abc"  
       var  b=123;            //声明一个变量,名称是b,初始值是123  
       c=new  Array();            //声明一个Array对象,也就是数组  
       这种变量和对象在声明之后只能在当前影片实例中直接引用,在其它的影片实例中需要引用时要以"."或者"/"方式引用,在这里我们推荐使用"."方式引用,如:  
       当我们引用最顶层实例中的变量或对象时,那就是_root.变量名  
       当我们引用上一层实例中的变量或对象时,那就是_parent.变量名  
       当我们要引用某个特定实例中的变量或对象时,那就是_root.实例名1.实例名2.变量名(类似文件夹路径,也有绝对路径和相对路径的形式)  
   
       说到这里或许有些人对引用方法还不是很熟悉,这样吧,我们换一种方法来理解,其实FLASH中的场景就相同于“我的电脑”中的磁盘分区C:,D:,E:等  
       然后每个场景中的影片实例就相当于磁盘分区中的文件夹,每个场景中都有一个顶级的实例就是我们新建一个FLASH文档之后所显示的那个实例,这个顶级的实例我们可以理解成磁盘的根目录,其它我们创建的影片元件实例可以理解成文件夹,结构也是一样的,都是呈树状的,所以每个影片实例中还可以再创建影片实例,这就相当于在文件夹中还可以再创建文件夹,然后实例的引用就相当于文件夹的路径,只是说区别如下:  
 
       FLASH                                                                        相当于文件系统中的  
       _root.Windows.System32.shell                        C:/Windows/System32/shell  
       /abc                                                                        _root.abc  
       ./abc                                                                        this.abc  
       ../abc                                                                        _parent.abc  
 
       现在各位该清楚了吧,好,我们再来说全局变量和对象的引用,这个嘛,就非常简单了,直接写变量或对象的名称就OK了  
 
       好了,跑题好半天了,该回来继续做我们的下载系统了  ^_^  (兄弟们别砸,呵呵,咦,我刚才说到哪儿了,我看看先...      *^_^*)  
     哦,刚才说到整理数据了,说到这里有一点比较常用的技巧需要说一下,就是关于使用循环来引用变量或对象的方法,比如:我们有几个文本框,分别命名text1,text2,text3,text4,text5,然后我们不想一个一个的去引用,那么我们可以用循环或者过程来引用它们,比如说把它们的内容都设成www.coolthor.com,那么我们可以用下面的代码完成  
     for(i=1;i<6;i++){  
           this["text"+i].text="www.coolthor.com";  
     }  
 
   当然,除了实例["变量名"]的方法之外还有/方法,不过最好还是用上面的这个方法比较好。  
   好了,现在我们就要开始说下载系统的FLASH部分的实现方法了,由于篇幅原因,我在这里就只写出实现的方法  
 
   首先建立变量保存当前页的页码和总页数(这个值由ASP提供),这样我们就可以做上一页和下一页的按钮,并进行判断是不是当前页的页码超出了预期的范围,然后我们再来建立loadvars对象的实例和回调函数,然后再编写对象数组的赋值代码,参考代码如下:  
 
   /*设aspRect为返回的数据,我们以第一种风格为例,设ASP返回的数据是aspRect=Foxmail,4.2,Windows,2003,Office,2003,Winamp,3.0  */  
     SoftData=new  Array();  
     tmpArray=aspRect.split(",");  
     tmpCount=0;  
     for(i=0;i<tmpArray.length;i++){  
           tmpCount++;  
           if  (tmpCount==2){  
                       tmpCount=0;  
                       SoftData.push({name:  tmpArray[i-1],  ver:  tmpArray[i]});  
           }  
     }  
         
       然后,我们需要准备显示列表了.

评论 点击查看
 

精彩图片