回首页
◎ 设为首页  
◎ 收藏本站  
◎ 联系我们  
首页 理财故事 专家点金 精打细算 我家财经 参考案例 生活 黄金 银行 保险 外汇 股票 基金 债券 期货 彩票 社保
论坛 创业人生 答疑解惑 商机无限 名人之路 科技致富 职场 收藏 古玩 字画 邮品 赏石 珠宝 旅游 汽车 科普 法规
网址 家居装饰 时尚丽人 家庭健康 大众饮食 电脑网络 数码 建站 娱乐 笑料 图片 文学 文摘 游戏 轶事 影音 链接
    首 页  理财之道  激情创业  银行保险  证券投资  收藏博览  消费指南  政策法规  休闲娱乐  科技之家  网站社区  
  当前位置:首 页 >> 科技之家 >> 建站宝典 >> Flash中调用XML程序实现分页效果
热 门 排 行
asp代码-注册登陆代码
中国明月网络提供8M永..
用透明Flash装扮好QQ..
HTML代码大全推荐
如何使网站顺利登录百度推荐
精彩教程:LOGO的制作..推荐
小区宽带主要常见故障..
网页制作学习入门教程..
用Flash制作一个网站..
SQL Server SQL语句导..
最 近 更 新
网页版权的正确写法
高性能表现的div+css..
DIV+CSS技术入门
SqlServer2005对现有..
常见的80004005错误及..
推广网站增加外链的方法
站长应掌握的九条平面..
搜索优化经验:百度降..
站长如何设计和优化网..
站长应如何定位自己的..
相 关 链 接
理财 基金 债券
金市 汇市 保险
收藏 期货 银行
     
最 新 推 荐
向马云学习如何做网站..推荐
做内容有价值的网站才..推荐
在网页中插入视频的方..推荐
在Access数据库中使用..推荐
网页小知识:注册/登..推荐
精彩教程:LOGO的制作..推荐
搜索引擎优化:关键词..推荐
网站设计:谈谈网页的..推荐
Flash中调用XML程序实..推荐
什么形式的网站是更有..推荐
站 内 搜 索
关键词

搜索方式

搜索范围

精确匹配
Flash中调用XML程序实现分页效果

来源:居家理财网 作者:编辑:晓青 等级:默认等级
发布于2006-03-17 08:32 被读350次 【字体: 】〖 访问论坛
 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,具体程序如下:
var news_xml:XML = new XML();
news_xml.onLoad = function(success:Boolean):Void  {
    if (success) {//加载XML文件成功
        var newsItems:Array = news_xml.firstChild.childNodes;
        (newsItems.length%10 == 0)?(var pages:Number = Math.floor(newsItems.length/10)):(var pages = Math.floor(newsItems.length/10)+1);//判断页数
        if (pages>1 ){
            nextp._visible = true;//如果页面数大于1,显示“下一页”按钮
        }//本文原创,转载请注明出处!(http://www.xiacong.com)
        for (var i: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和内存消耗),当点击"上一页"时,也要卸载之前显示的内容,然后利用类似于上面代码的功能将新的新闻条目载入到动态文本框中,函数程序如下:
function nextpages() {
    ++page;
    var newsItems:Array = news_xml.firstChild.childNodes;
    (newsItems.length%10 == 0)?(var pages:Number = Math.floor(newsItems.length/10)):(var pages = 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)+p)).id = (page*10)+p;
        eval("na"+((page*10)+p)).onRollOver = menuOver;
        eval("na"+((page*10)+p)).onRelease = menuRelease;
        eval("na"+((page*10)+p)).onRollOut = menuOut;}
    }
}
function previouspages() {
    --page;
    var newsItems:Array = news_xml.firstChild.childNodes;
    (newsItems.length%10 == 0)?(var pages:Number = Math.floor(newsItems.length/10)):(var pages = Math.floor(newsItems.length/10)+1);//判断页数
    if (page == 0) {
        previousp._visible = false;
    }
    if ((page+1) != pages) {
        nextp._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;
        eval("na"+((page*10)+p)).dname.text = newsItems[(page*10)+p].firstChild.firstChild.nodeValue;
        eval("na"+((page*10)+p)).id = (page*10)+p;
        eval("na"+((page*10)+p)).onRollOver = menuOver;
        eval("na"+((page*10)+p)).onRelease = menuRelease;
        eval("na"+((page*10)+p)).onRollOut = menuOut;
    }
}
OK,分页全部实现!上面代码中的menuRelease;menuOver;menuOut表示了鼠标的动作,呵呵~当鼠标放上去时显示不同的颜色,点击时链接到详细新闻页面~~
function menuOver() {
    eval("na"+this.id).dname.textColor = "0xffffff";
}
function menuOut() {
    eval("na"+this.id).dname.textColor = "0xFDE5B9";
}
function menuRelease() {
    var url_link = news_xml.firstChild.childNodes[this.id].childNodes[1].firstChild.nodeValue;
    if (url_link != null) {
        getURL("javascript:void(open_window(’"+url_link+"’))");
    }
}
终于大功告成,大家可以测试一下,我尽量用容易理解的思维方式和程序实现了分页效果,这也是网易《天下贰》内测官方网站Flash加载外部XML实现新闻的源代码,呵呵~
另外还想了一种方法,因为每页加载固定量的新闻条目,比如10条,那么第一页就是显示1-10,第二页显示11-20,如此类推,可以用页面的变量p*10+(0-10)来加载,1、11、21、31……这些都是放在同一区域,所以比较容易实现,有兴趣的可以试试~~呵呵
作者:xiacong  来源:xiacongblog

(您想天天免费看到如此及时全面的资讯吗?请点击此处将居家理财网加入您的收藏夹就可以了。点击此处将居家理财网设为您的上网首页。)
  居家理财网-- www.jj86.com

※非常感谢您阅读本页!※内容仅供参考,不构成任何行为依据※!暂无相关专题

上一篇:从ASP.NE T 1.1升级到ASP.NET 2.0需要考虑的Cookie问题
下一篇:模似windows XP 左侧的菜单效果

共有评论 0 条 网友评分 0分 查看全部

【发表评论】 评分:1分 2分 3分 4分 5分


 版权申明
1、 发表文章作品必须依法行事;所有文章及相关评论仅代表作者本人观点,与本站立场无关。
2、 本站刊登该文章只为交流之用,无任何营利目的,如有侵犯或不妥,请直接与我们联系。
3、 原创文章或评论版权归本站和作者共有;转载的文章及其它作品,版权归原发表单位及作者所有。
4、 由于来自于网上部分文章无法查证原作者和出处,如署名或出处有误,请直接与我们联系。
5、 如果转载,务必注明作者与出处;从本站转载请标注:文章来源:居家理财网
论坛内容更精彩,欢迎参与讨论交流!
网址大全 网上投稿 广告服务 服务条款 人才招聘 笑话大全 设为首页 加入收藏夹 友情链接 网站建设
本站永久域名:☆www.jj86.com Rss 2.0
      Copyright © 2004-2005 居家理财网 All Right Reserved.吉ICP备05003931号
     
 推荐↑ 关闭╳
 推荐↑ 关闭╳