Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.08.2016, 14:01
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 1  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
По умолчанию Компонент пагинации

Не встречал ли кто as3 аналогов такого компонента?Дизайнер выставил такие требования:
1)Всегда должны быть видны первые 2 и последние 2 страницы
2)Относительно текущей страницы юзер должен иметь возможность прыгнуть на следующую/предыдущую страницу без кликания по кнопкам вперед/назад. Гифка кому лень по ссылкам кликать:
Миниатюры
Нажмите на изображение для увеличения
Название: react-paginate.gif
Просмотров: 120
Размер:	168.0 Кб
ID:	32285  

Старый 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 Кб, 123 просмотров)


Последний раз редактировалось undefined; 08.08.2016 в 13:21.
Старый 11.08.2016, 21:29
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Ага. Я чуть было не обкоммитился под себя )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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