快速业务通道

Flash中调用XML程序实现分页效果

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-08

  Flash调用外部的XML程序来显示新闻,当新闻达到一定数目时就存在分页的问题,今天仔细想了一下,大概可以有两种实现的方法,第一种比较简单,首先获取把XML文件的新闻数目,然后除以每页要显示的条目数,就可以知道一共有多少页,然后通过调用每页新闻来实现分页效果,例如:每页显示10条新闻,XML文件一共有36条新闻,那么应该显示4页,也就是Math.floor(36/10)+1,这样有个问题,假设新闻数目n刚好符合n%10==0的条件,此时页数应该不用加1,我开始忽略了这个问题,在做《天下贰》官方网站时发现上面的新闻条数刚好是10条,所以出现了一个空页面,要做个判断就可以避免这种问题.

现在一步步来实现,首先在场景中新建一个名为news_a的MC,里面包含一个名为dname动态文本框用来显示XML中的数据,OK,用duplicateMovieClip函数复制10个news_a用来显示调用的10条新闻,此时如果页面数大于1,还需要显示“下一页”按钮进行分页加载,同理如果存在上一页,则需要显示“上一页”按钮进行分页加载。给“下一页”按钮命名为nextp,“上一页”按钮为previousp,默认时两个按钮的状态都为不可见。

假设外部文件新闻的XML文件是news.xml,具体程序如下:
varnews_xml:XML=newXML();
news_xml.onLoad=function(success:Boolean):Void{
if(success){//加载XML文件成功
varnewsItems:Array=news_xml.firstChild.childNodes;
(newsItems.length%10==0)?(varpages:Number=Math.floor(newsItems.length/10)):(varpages=Math.floor(newsItems.length/10)+1);//判断页数
if(pages>1){
nextp._visible=true;//如果页面数大于1,显示“下一页”按钮
}//本文原创,转载请注明出处!(http://www.xiacong.com)
for(vari:Number=0;i<10;i++){//初始状态时加载最新的10条新闻
news_a.duplicateMovieClip("na"+i,i+1000);
with(eval("na"+i)){
_x=0;
_y=0+i*24;
if(newsItems[i].firstChild.firstChild.nodeValue!=null){
this.dname.text=newsItems[i].firstChild.firstChild.nodeValue;
this.id=i;
this.onRollOver=menuOver;
this.onRelease=menuRelease;
this.onRollOut=menuOut;}
}
}
}else{
news_a.dname.text="新闻加载失败";
}
};
news_xml.load("news.xml");//加载外部XML文件的路径上面的代码已经加载了默认最新的10条新闻,现在来进行分页加载,分别有两个函数:上一页函数previouspages()和下一页函数nextpages();
上一页和下一页的实现原理是:当点击“下一页”时,利用removeMovieClip()卸载之前显示的全部内容(这为了节约CPU和内存消耗),当点击"上一页"时,也要卸载之前显示的内容,然后利用类似于上面代码的功能将新的新闻条目载入到动态文本框中,函数程序如下:
functionnextpages(){
++page;
varnewsItems:Array=news_xml.firstChild.childNodes;
(newsItems.length%10==0)?(varpages:Number=Math.floor(newsItems.length/10)):(varpages=Math.floor(newsItems.length/10)+1);//判断页数
if((page+1)==pages){
nextp._visible=false;
}
if(page!=0){
previousp._visible=true;
}//本文原创,转载请注明出处!(http://www.xiacong.com)
for(p=0;p<10;p++){
removeMovieClip("na"+((page-1)*10+p));
trace("na"+((page-1)*10+p));
news_a.duplicateMovieClip("na"+((page*10)+p),(page*10)+p+1000);
eval("na"+((page*10)+p))._x=0;
eval("na"+((page*10)+p))._y=0+p*24;
if(newsItems[(page*10)+p].firstChild.firstChild.nodeValue!=null){
eval("na"+((page*10)+p)).dname.text=newsItems[(page*10)+p].firstChild.firstChild.nodeValue;
eval("na"+((page*10)+

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号