`

分页留言板学习

    博客分类:
  • Flex
阅读更多

在网上看到一个网友做得FLEX练习:http://myqiao.oxyhost.com/flex/,很不错。特别是关于分页留言板的小练习,我详细看了看,有很多学习的地方。特在此记录一下,为以后用的着做准备。

 

这个练习底层是用PHP做得,通讯用的是HTTPSERVICE,不过底层他没公布,那就学习上层FLEX吧。主要是分页的flex实现:

 

他主要使用组件来完成嵌套,像NavBar.mxml



 

NavBar.mxml

 

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" verticalAlign="middle" xmlns:local="*">

<mx:Script>
    <![CDATA[

    
    //page_no 从 0 开始计数
    private var current_no:int;
    //page_count 从 0 开始计数
    private var page_count:int;
    private var nav_callback:Function = function (url:String):void;
    private var new_callback:Function = function ():void;

    
    //设置导航条的 当前页号 和 各页号的Url 和 点击导航按钮的回调函数
    public function setButtons(current_no:int,page_count:int,nav_back:Function,new_callback:Function):void
    {
        if(current_no>page_count) 
            throw (new Error("当前页超出范围"));
        
        this.current_no=current_no;
        this.page_count=page_count;
        this.nav_callback=nav_back;
        
        prio_btn.click_callback=nav_callback;
        next_btn.click_callback=nav_callback;
        this.new_callback=new_callback;
        
        page_nav_box.removeAllChildren();
        makeBar();
    }
    
    private function onNew():void
    {
        new_callback();
    }
    
    //num 从零开始计数
    private function addNumberButton(num:int):void  //生成按钮并添加到page_nav_box中
    {
        var btn:NavButton=new NavButton();
        btn.setNumber(num);
        btn.click_callback=nav_callback;
        
        if(num ==current_no) btn.setCurrent(true); //设置按钮是不是可点击
        else btn.setCurrent(false);
    
        page_nav_box.addChild(btn);
    }
    
    
    private function  makeBar():void
    {        
        var i:int;
        var btn:NavButton;
        
        if(page_count>5)//页面数大于五 6 7 8 ...
        {
            if(current_no<3)//当前页号为 0 1 2
            {
                //显示最前面五个
                for(i=0;i<5;i++)
                    addNumberButton(i);

                page_nav_box.addChild(new DotLabel()); //添加省略号,这个以前真不知道
                addNumberButton(page_count); //添加最后一个
            }
            
            else if(current_no>(page_count-3))//当前页号为 page_count page_count-1  page_count-2
            {
                addNumberButton(0);//添加第一页
                page_nav_box.addChild(new DotLabel()); //添加省略号
                
                //显示最后面五个
                for(i=page_count-4;i<page_count+1;i++)
                    addNumberButton(i);
            }
            else // 2 < 当前页号 < length-3
            {
                addNumberButton(0);
                if(current_no>3)  //在第4页的时候怎么没显示省略号呢?因为它是从0开始的
                    page_nav_box.addChild(new DotLabel()); //添加省略号
                
                for(i=current_no-2;i<current_no+3;i++)  //中间显示五个
                    addNumberButton(i);
                    
                if(current_no<(page_count-3))
                    page_nav_box.addChild(new DotLabel());
                addNumberButton(page_count);
            }
        }
        else
        {
            for(i=0;i<page_count+1;i++)
                addNumberButton(i);
        }
        
        //设置上一页和下一页是不是可点击,可点击时的URL
        if(page_count==0)
        {
            prio_btn.enabled=false;
            next_btn.enabled=false;
        }
        else
        {
            //设置当前页按钮为 disable
            switch(current_no)
            {
                case 0:
                    prio_btn.enabled=false;
                    next_btn.enabled=true;
                    next_btn.setNumber(current_no+1);
                    break;
                case page_count:
                    prio_btn.enabled=true;
                    prio_btn.setNumber(current_no-1);
                    next_btn.enabled=false;
                    break;
                default:
                    prio_btn.enabled=true;
                    prio_btn.setNumber(current_no-1);
                    next_btn.enabled=true;
                    next_btn.setNumber(current_no+1);
            }
        }
    }
        
    ]]>
</mx:Script>

    <mx:HBox width="100%" horizontalGap="0" verticalAlign="middle" backgroundColor="#FFFFFF">
        <local:NavButton id="prio_btn" label="上一页" fontWeight="bold" fontSize="12"  textDecoration="underline" color="#0000FF"/>
        <mx:HBox id="page_nav_box"/>    
        <local:NavButton id="next_btn" label="下一页" textDecoration="underline" color="#0000FF" fontSize="12"/>
        <mx:Spacer width="100%"/>
        <mx:LinkButton label="我要留言" click="onNew()" fontSize="12" textDecoration="underline" color="#0000FF" icon="@Embed(source=&apos;../images/arrow.gif&apos;)"/>
        
    </mx:HBox>
</mx:HBox>

每个按钮,也写成了一个组件:NavButton.mxml

NavButton.mxml:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml" color="red" label="1" click="onClick()" >

<mx:Script>
    <![CDATA[

        private var url:String="";
        private var call_back:Function = function (url:String):void;
        
        
        private function onClick():void
        {
            call_back(url);
        }
        
        public  function  set click_callback(value:Function):void
    {
        this.call_back=value;
    } 
        
        public function setNumber(n:int):void //设置按钮的label和url
        {
            if((this.name!="prio_btn")&&(this.name!="next_btn"))
                this.label=(n+1).toString();
            this.url=BBS.START_URL+n.toString();
        }
        
        public function setCurrent(b:Boolean):void //设置按钮可点击与否
        {
            this.enabled=!b;
        }
    ]]>
</mx:Script>

</mx:LinkButton>

 效果如图:



 



 



 

  • BBS.zip (268.2 KB)
  • 下载次数: 26
  • 大小: 1.4 KB
  • 大小: 1.6 KB
  • 大小: 6 KB
  • 大小: 5.9 KB
分享到:
评论

相关推荐

    jsp+xml留言板(带分页)

    【jsp+xml留言板(带分页)】是一个基于Java、XML和JSP技术实现的互动式留言板系统,具备基本的留言功能以及分页显示留言的能力。这个项目主要展示了如何利用Java来处理XML文件,实现了对XML数据的CRUD(创建、读取...

    适合初学都学习ASP 留言板简单分页技术

    学习ASP留言板的简单分页技术和验证登录,不仅可以提升你的编程技能,也是迈向更复杂Web应用的第一步。理解这些基础概念后,你可以逐步学习更多的ASP特性,如自定义函数、错误处理、数据库操作等,进一步提升你的Web...

    11_留言板_搜索_分页_php_

    【标题】"11_留言板_搜索_分页_php_" 提供的是一个基于PHP实现的留言板系统,该系统集成了后台管理框架、分页功能以及站内搜索功能。这是一个非常实用且具有教育意义的项目,适合初学者学习PHP编程以及网站开发实践...

    馨玮个人博客 jsp servlet javabean access 分页 jsp留言板

    在留言板功能上,它还支持UBB(UniformBulletin Board)代码,提供了一种简单的富文本编辑方式。 1. **JSP(JavaServer Pages)**:JSP是Java Web开发中的视图层技术,允许开发者将HTML、CSS和Java代码混合编写,...

    留言板设计

    这个“留言板设计”项目是一个综合性的学习和实践平台,涵盖了Web开发的基本技能,对于初学者来说,是一个很好的学习和提高的机会。通过这样的实践,可以提升对Web开发流程、前后端协作以及服务器端编程的理解。

    php留言板代码,php留言板

    这个压缩包中的“PHPWind_GBK_6.3RC”可能是一个名为PHPWind的论坛系统的GBK编码版本,它包含了创建和管理留言板所需的所有文件。PHPWind是一款知名的开源社区软件,而6.3RC可能是其6.3版本的Release Candidate...

    2套分页模式留言板11-19

    本资料"2套分页模式留言板11-19"提供了一种实现分页功能的学习资源,旨在帮助开发者逐步掌握分页技术。 分页类与分页函数是实现分页功能的核心组件。分页类通常是一个封装了分页逻辑的对象,它可以负责计算页面数量...

    基于Flask的留言板Demo

    【基于Flask的留言板Demo】是一个使用Python的Flask框架构建的应用程序,旨在提供一个简单的交互平台,允许用户留言、注册、登录和注销。在这个项目中,开发者利用Flask的强大功能,创建了一个用户友好的界面,实现...

    PHP+AJAX留言板+内容分页(带数据库文件)

    为了优化用户体验,留言板通常不会一次性加载所有留言,而是采用分页方式。PHP计算出总页数,并生成相应的页码链接。当用户点击页码时,AJAX再次发送请求,获取指定页码的留言内容。 7. **数据库创建文件**: ...

    JSP实现留言板功能

    如果留言板记录较多,可以考虑分页显示。计算总页数,设置每页显示的留言数量,根据用户选择的页码查询对应的数据。 7. **权限控制** 对于“管理员”和“用户”两种角色,可以实现不同的功能。例如,用户只能查看...

    asp.net留言板

    在留言板应用中,通常会根据数据库查询的结果动态生成分页链接,用户点击页码后,服务器会根据新的页码重新执行查询,返回对应页面的数据。 对于这个"asp.net留言板"项目,开发人员可能首先创建了一个SQL数据库表来...

    留言板的java源代码

    【描述】:“留言板的java源代码留言板的java源代码留言板的java源代码留言板的java源代码留言板的java源代码留言板的java源代码” 描述中反复提到了“留言板的java源代码”,这强调了这是一个关于Java语言实现的...

    基于Dreamweaver软件实现留言板的网页制作

    在实际操作中,还可以进一步学习如何优化用户体验,例如添加分页功能、时间戳显示、表情支持等,从而提升留言板的实用性。 文件"liuyan"可能是留言板的实例数据,可能包含了已有的留言记录,供学习者参考和分析。在...

    留言板源码。留言板 ASP。net C#

    总结来说,这个压缩包提供了一个ASP.NET C#留言板的完整示例,对于想要学习或提升ASP.NET Web应用开发技能的开发者来说,是一份宝贵的资源。通过深入研究这个实例,可以了解到ASP.NET的Web Forms架构,C#编程技巧,...

    漂亮的留言板 漂亮的留言板 漂亮的留言板 漂亮的留言板

    【留言板系统设计与实现】 留言板系统是网络应用中常见的交互工具,它允许用户发布消息、评论,以及其他形式的互动。本资源提供了一个“漂亮的留言板”系统,其设计和实现注重用户体验,界面美观,操作简便。下面...

    JSP基础功能源码包括数据验证,分页,留言板

    本资源包含的数据验证、分页以及留言板功能是JSP应用中的常见实践,下面将对这些知识点进行详细解析。 ### 数据验证 数据验证是任何Web应用程序不可或缺的一部分,确保用户输入的有效性和安全性。在JSP中,可以...

    php小型留言板 php小型仿论坛留言板

    7. **分页技术**:如果留言板的留言数量较多,分页可以提高用户体验,通过PHP实现每页显示一定数量的留言。 8. **会话管理**:可选功能,用于识别和管理用户会话,如登录状态、防止重复提交等。 9. **错误处理与...

    经典原创php留言板(后台框架、分页、站内搜索等)

    这是一个基于PHP的经典留言板系统,包含了后台管理框架、分页功能以及站内搜索模块。这个系统的设计和实现都具有原创性,对于初学者或者需要快速搭建简单互动平台的开发者来说,是一个很好的学习和实践资源。 首先...

    留言板,用户登录,注册,发留言,分页

    【标题】:“留言板,用户登录,注册,发留言,分页”所涉及的IT知识点主要集中在Web应用程序开发领域,特别是用户认证与交互的功能实现。在这个系统中,我们关注以下几个核心概念: 1. **用户登录与注册**:这是...

Global site tag (gtag.js) - Google Analytics