Показать сообщение отдельно
Старый 08.08.2016, 02:12
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
наг****кодил
Код 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 Кб)
Вложения
Тип файла: swf paginator.swf (12.5 Кб, 124 просмотров)


Последний раз редактировалось undefined; 08.08.2016 в 13:21.