当前位置 :主页>知识堂>Flash实例教程>列表

FLASH里做新闻信息列表按日期,按标题排序,以及关键字搜索

时间:2008-05-08 来源:www.blueidea.com  作者:moyu0921   点击:
    核心提示:最近做到一个项目有用到,以前做新闻信息排序跟关键字搜索都是由后台完成,然后生成XML,FLASH再去读...

  最近做到一个项目有用到,以前做新闻信息排序跟关键字搜索都是由后台完成,然后生成XML,FLASH再去读,这样由FLASH去LOAD后台程序页面,后台又要去访问数据库,然后排好输出,FLASH等排好了再去读,但是客户要求是苛刻的,他说这样速度上慢很多,要求一定要在FLASH里直接完成,累得我跑来经典请教了各位大虾,最后还是搞定了.大难不死啊。
我把我大概的做法贴出来,大家一起交流下,看还有没更好的办法实现。
成品浏览:http://www.an-ye.cn/Search
XML地址为:http://www.an-ye.cn/Search/xml/xml_1.xml

首先是日期排序
我的做法是用sortOn来排,因为sortOn可以按数组中的某种属性来排序,所以我们只要给每个数组元素定义它属性 以及把相应数字赋值给它 这样就可以通过sortOn来排出日期大小的信息了,但是单独的日期是不能直接比较大小的(可能有方法可以比,但是我不知道),所以我是用先比较年,然后比较月,最后比较日的方法做的,然后日期最大的,例如上面的数组有5个元素,每个轮流跟其他4个数组元素比较一下,如果最大的是大于其他4个,那么变量dateNum就dateNum++四次,然后把值赋给这个数组元素DateDataArr[k].Value=dateNum;最后每个数组元素都会得到一个单独的数字,最后我们就可以用DateDataArr.sortOn("Value",2|16);来把这些数组按Value这个元素从大到小或者小到大排列了。具体代码如下,把代码粘贴放到第一帧就输出就可以看到排序效果了,具体代码如下:
var DateDataArr:Array=["2008-01-02","2008-05-20","2008-03-13","2008-01-10","2007-01-09"];
for(k=0;k<DateDataArr.length;k++){
    var dateNum=0;           
    for(j=0;j<DateDataArr.length;j++){
        var YearN=Number(DateDataArr[k].split("-")[0]);
        var MonthN=Number(DateDataArr[k].split("-")[1]);
        var dayN=Number(DateDataArr[k].split("-")[2]);
        var YearNN=Number(DateDataArr[j].split("-")[0]);
        var MonthNN=Number(DateDataArr[j].split("-")[1]);
        var dayNN=Number(DateDataArr[j].split("-")[2]);
        if(YearN>YearNN){
            dateNum++;
        }else if(YearN==YearNN){
            if(MonthN>MonthNN){
                dateNum++;
            }else if(MonthN==MonthNN){
                if(dayN>dayNN){
                    dateNum++;
                }
            }
        }
    }
    DateDataArr[k].Value=dateNum;
}
//按日期正排序
DateDataArr.sortOn("Value",2|16);
//按日期逆排序
//DateDataArr.sortOn("ValueN",1|16);
trace(DateDataArr);

然后是按标题排
按标题比较简单些,直接sort排序就搞定了!具体代码如下:
var tiTlelDataArr:Array=["ccc","bbb","zzz","222","111"];
//按标题正排序
tiTlelDataArr.sort();
//按标题倒排序
//tiTlelDataArr.sort(2);
trace(tiTlelDataArr);

其次是关键字搜索
首先在场景上做一按钮实例名为btn,一个输入文本实例名为SearchTxt。因为FLASH里提供了indexOf搜索函数(这里感谢下flash023斑竹的提示),indexOf是查询数组用,如果有查到有相关的内容数组.indexOf(SearchTxt.text)的值会为0,否则为-1;所以我们要新建一个新的空数组SearchArr,用来组合所有符合关键字的内容,每搜索到一条符合的内容便push上去,而最后SearchArr这个数组便是我们所搜索出来的东西.具体代码如下:
var dataArr:Array=["ccc","bbb","zzz","aaa","aa"];
btn.onRelease=function(){
    var SearchArr:Array=new Array();
    if(SearchTxt.text!=""){
        for(j=0;j<dataArr.length;j++){
            if(dataArr[j].indexOf(SearchTxt.text)!=(-1)){
                SearchArr.push(dataArr[j]);
            }
        }
        if(SearchArr.length==0){
            trace("没有相关信息");
        }else{
            trace(SearchArr);
        }
    }
}

上一篇:Flash 执行exe文件     下一篇:仿苹果的导航菜单flash实例教程
版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意:本站所提供的源文件,电子书,第三软件,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。
 评论内容:(最新评论共有 0) 位网友发表了评论不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名? 马上注册
 
 
知识堂分类
RIA教程调查
RIA项目包
本站所提供的所有素材版权归原作者所有,本站只供网友参考与交流,未经作者同意请勿用于商业用途 京ICP备05051668号
服务器带宽提供:零刻数据 本站CDN由网觉天下提供技术支持。 下载带宽支持:重庆万网
52RIA.com[我爱RIA网]是中国第一个以RIA开源为主的网站:所涉及的栏目版块有RIA源码,RIA技术,RIA教程RIA酷站RIA论坛RIA第3方软件RIA电子书