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

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

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

Регистрация: Jun 2011
Сообщений: 127
По умолчанию List component. Глюки при использовании verticalScrollPosition

Сделал список с использованием компонента List. В нем 187 строчек, на экран умещаются 9 из них.
Сделал 2 кнопки для постраничной перемотки этого списка вверх и вниз. На 9 строчек сразу.

Например для кнопки вниз код такой
list - это List() из fl.controls.List
Код AS3:
list_down.addEventListener(MouseEvent.CLICK,scrollToIndexListDown);
 
function scrollToIndexListDown(e:MouseEvent){
	var lScroll:int=list.verticalScrollPosition+Math.floor(list.height/list.rowHeight);
	if(lScroll>=list.length)  lScroll=list.length-1;
	list.scrollToIndex(lScroll);
        trace(lScroll);
 
}
Вот что выводит скрипт при работе

9
14
114
187

ТО есть первые 2 нажатия список прокручивается так как и задумано, а потом скачком на 100 рядов сразу.
Помогите разобраться в чем дело.

Старый 13.10.2011, 15:12
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Цитата:
verticalScrollPosition : Number
Определяет или задает значение, показывающее положение вертикальной полосы прокрутки на панели прокрутки (в пикселах).
Цитата:
length : uint
[только для чтения] Определяет число элементов, предоставляемых поставщиком данных.
Вы сравниваете пиксели с кол-вом элементов , надеюсь разберетесь
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 13.10.2011, 15:16
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 3  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Ага спасибо. А я то думал verticalScrollPosition это позиция строчки. Значит будем пересчитывать.

Добавлено через 22 минуты
Сейчас попробовал выводить следующие значения, при прокрутку списка
Код AS3:
trace(list.verticalScrollPosition); //0 при минимальной прокрутке и 4605 при максимальной в конец
trace(list.height);// выводит 195 высота в пикселах
Так что verticalScrollPosition это не экранные пиксели 100%, а что то другое

Подумал может это высота списка если его развернуть так чтобы видны были все записи, то есть
list.verticalScrollPosition (максимальная)=list.rowHeight*число рядов
Но это тоже оказалось не верно.
4605/list.rowHeight=230.25, а не 195

Старый 14.10.2011, 06:16
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Если list "развернуть так чтобы видны были все записи", то его высота будет (4605 + 195)

Старый 14.10.2011, 08:39
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 5  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
height определяет высоту самого контейнера, а не списка.
чтобы получить максимальную позицию по вертикали необходимо обратиться к свойству maxVerticalScrollPosition
__________________
Блог, Twitter
Брюзга.

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

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

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


 


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


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