Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Компонент пагинации (http://www.flasher.ru/forum/showthread.php?t=213214)

undefined 06.08.2016 14:01

Компонент пагинации
 
Вложений: 1
Не встречал ли кто as3 аналогов такого компонента?Дизайнер выставил такие требования:
1)Всегда должны быть видны первые 2 и последние 2 страницы
2)Относительно текущей страницы юзер должен иметь возможность прыгнуть на следующую/предыдущую страницу без кликания по кнопкам вперед/назад. Гифка кому лень по ссылкам кликать:

undefined 08.08.2016 02:12

Вложений: 1
наг****кодил
Код AS3:

import flash.display.*;
import flash.events.*;
var nPages:uint=10;
var btns:Array=[];
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
var paginator:Sprite=new Sprite();
addChild(paginator);
function getPagesStr(n:uint):String {
        var res:String="";
        if (nPages<=5) {
                for(var i:uint=1;i<=nPages;i++)
                        res+=i+((i==nPages)?"":",");
                return res;
        }
        var lastNumber:uint;
        if (n<=3) {
                res="1,2,3,4";
                lastNumber=4;
        } else {
                if (n!=nPages) {
                        res="1,2,"+((n-1==3)?"":"...,")+(n-1)+","+n+","+(n+1);
                        lastNumber=n+1;
                } else {
                        res="1,2,...,"+(n-1)+","+n;
                        lastNumber=n;
                }
        }
        if (lastNumber<nPages) {
                if (lastNumber!=nPages-1 && lastNumber!=nPages-2 && nPages-1>lastNumber)
                        res+=",...,"+(nPages-1)+","+nPages;
                else if (lastNumber==nPages-1)
                        res+=","+nPages;
                else if (lastNumber==nPages-2)
                        res+=","+(nPages-1)+","+nPages;
                else
                        res+=","+(nPages-1)+","+nPages;
        }
        return res;
}
var curPage:uint=1;
update_btn.addEventListener(MouseEvent.CLICK,onClick);
function createPageBtns(str:String):void {
        if (btns.length>0) {
                for (var i:uint=0;i<btns.length;i++) {
                        btns[i].removeEventListener(MouseEvent.CLICK,onClick);
                        btns[i].parent.removeChild(btns[i]);
                }
                btns=[];
        }
        var pages:Array=str.split(",");
        var btn:page_btn;
        for (i=0;i<pages.length;i++){
                btn=new page_btn();
                btn.tf.text=pages[i];
                if (pages[i]!="...") {
                        btn.page=parseInt(pages[i]);
                        btn.addEventListener(MouseEvent.CLICK,onClick);
                        if (btn.page==curPage)
                                btn.gotoAndStop(2);
                        else
                                btn.gotoAndStop(1);
                        btn.tf.mouseEnabled=false;
                }
                btn.x=paginator.width;
                paginator.addChild(btn);
                btns.push(btn);
        }
        paginator.x=stage.stageWidth*0.5-paginator.width*0.5;
        paginator.y=stage.stageHeight*0.5-paginator.height*0.5;
}
//btn.addEventListener(MouseEvent.CLICK,onClick);
createPageBtns(getPagesStr(curPage));
function onClick(e:Event):void {
        if (e.target==update_btn) {
                nPages=parseInt(pages_tf.text);
                if (curPage>nPages) curPage=nPages;
                createPageBtns(getPagesStr(curPage));
        } else {
                curPage=e.target.page;
                createPageBtns(getPagesStr(curPage));
        }
        //curPage++;
        //trace(curPage,getPagesStr(curPage));
}

Может кому пригодится
paginator.swf   (12.5 Кб)

dimarik 11.08.2016 21:29

Ага. Я чуть было не обкоммитился под себя )


Часовой пояс GMT +4, время: 16:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.