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

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

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

Регистрация: Oct 2006
Сообщений: 2,283
По умолчанию разыскивается годный скроллер

Ув. сообщество, веду поиск компонента для скролинга километровых портянок однотипных итемов. Требования следующие:
Обязательно:
1) Компонент не должен разом пихать все итемы в себя, т.к. их дофигиша. Т.е. Должен работать аля андройдовский/айосевский, добавляя итемы, по мере их появления на экране.

Желательно:
2)Легковесный
3)Легко Скинируемый
4) Итемы должны представлять полноценные DysplayObject'ы внутри компонента.Т.е. если я в качестве итема предоставляю MovieClip,то и внутри компонента он должен остаться MovieClip'ом.

Поделитесь ,плз, чем вы пользуетесь. Оч. не хочется изобретать очередной велосипед.

Заранее спасибо.

Старый 31.12.2014, 00:07
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
У меня корпоративный велосипед. В своих проектах мы используем написанные мною т.н. ItemRenderer компоненты вкупе с т.н. техникой virtual layout. Идеи (вдохновление) от Flex, реализация моя. Портянки можно располагать Linear Layout (vertical или horizontal) или Tile Layout. Длина портянок ограничена доступной памятью на количество моделек для рендеринга. Тормозит на сложных ItemRenderer, в том числе на тех, в которых есть вложенные списки с virtual layout. Но похожее, с честным созданием всех рендереров превышает квоты по памяти и по тормозам скролла в O(n^2).

Могу выделить пару-тройку критериев, по которым я немного походил и понял, что они ключевые. Исходный код не дам и не просите =)

Добавлено через 15 минут
И тут я вспомнил, что скроллер — это отдельный компонент. Он скроллит не только списки, но и любые DisplayObject, имплементирующие определенный интерфейс, некий IViewPort. Причем, сам скроллер может быть не только попиксельным, но, и, например, постраничным.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 31.12.2014, 14:49
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Dimarik -не мог-бы ты в общих словах,конспективно описать структуру классов своего велосипеда? Ну и вообще внутреннюю кухню. Если уж писать свой костыль хотелось-бы какой-то универсальности. Например интересует как определять список видимых итемов, если заранее неизвестны их(итемов) гарариты?

Старый 31.12.2014, 16:01
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
undefined - тебе кроме формулы знать ничего не надо, все остальное это чисто твоя кастомизация.
ВОт тебе формула на DO любой высоты и ширины, и соответсвенно можно добавлять НОВЫЕ списки в любой момент апдейт будет нормальным. И формула на чисто текстовое поле.

Код AS3:
_content.y = _startYContent - ( (_content.height - _mask.height) / _wayOfScroll ) * ( _scroll.y - _startYScroll );
Код AS3:
_tf.scrollV = Math.round(((_tscroll.y - _trect.y) / _wayOfTextScroll ) * _tf.maxScrollV);
Код AS3:
this._trect = new Rectangle(_tscroll.x, _tscroll.y, 0, _wayOfTextScroll);
__________________
Марк Tween

Старый 31.12.2014, 16:23
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 5  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
in4core -
Цитата:
Обязательно:
1) Компонент не должен разом пихать все итемы в себя, т.к. их дофигиша. Т.е. Должен работать аля андройдовский/айосевский, добавляя итемы, по мере их появления на экране.
+ не забываем что размер итемов не всегда заранее известен
так-то формулу я и сам могу спокойно вывести

Старый 31.12.2014, 17:46
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
+ не забываем что размер итемов не всегда заранее известен
И что? Какая фиг разница какого размера у тебя итемы? У тебя все считается по маске и контейнеру. Какой высоту будет контейнер в котором хоть 1000 иэтом или только 1.
Я знаю о чем говорю, я пользуюсь списками и элементами на прокрутку всю свою деятельность. И эта формула покрывает ВСЕ варианты
__________________
Марк Tween

Старый 31.12.2014, 17:55
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 7  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
еще раз, требование что я написал обязательное,т.к. добавляя 1000 итемов по 50 пикс. в высоту получаем портянку на 50 тыс., от чего у флэша инфаркт случается, так что не все.
upd: проблема не в том,что я не могу вывести формулу перемещения контейнера, проблема в том, как вообще избавиться от глобального контейнера. Вот Dimarik правильно понял. Хотелось-бы нечто подобное его велику.


Последний раз редактировалось undefined; 31.12.2014 в 18:12.
Старый 31.12.2014, 18:23
PsychoTech вне форума Посмотреть профиль Отправить личное сообщение для PsychoTech Найти все сообщения от PsychoTech
  № 8  
Ответить с цитированием
PsychoTech
 
Аватар для PsychoTech

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
боже использовать маску для скролла это издевательство над своим собственным мозгом.

Не знаю как там в андроне или яблоке, но раз уж такая кухня пошла, то вот:

Код AS3:
var MySprite: Sprite = new Sprite(); // создаем обычный спрайт он же и будет нашим скролбоксом
MySprite.scrollRect = new Rectangle(0, 0, 100, 100); // здесь мы обрезаем содержимое, т.е получается эффект наложения маски самим флешем
addChild(MySprite);// таким же макаром можно адачить все его содержимое
// проблем с динамикой вообще нет если содержимое скролла не имеет нулевую точку вращения в центре, в последнем случае придется немного с координатами шаманить
это основа скрола.
Для самого скролинга используем конструкцию типа:

Код AS3:
var Scroll: Rectangle = MySprite.scrollRect;
Scroll.y = Scroll.y + someDeltaNumVar;// someDeltaNumVar - переменная или константа на которую будет смешаться скролл при Scroll.y - по вертикале, при Scroll.x по горизонтали.
MySprite.scrollRect = Scroll;// все применяем новую "маску" уже смещенную, т.е. после этого произойдет смещение содержимого на someDeltaNumVar
Я свой велик делал на этой основе, при манипуляции мышью все шоколад, а вот со своими полосами прокрутки для визуализации, пока косяк выходит посему код выше не копипаст а приблизителен из башки на скорую руку. Сам думал поискать аналоги, чтобы был красивый скроллбокс без косяков. Если углубиться то у меня сейчас небольшие проблеммы с синхронизацией полос прокрутки и действий мыши. Если пользоваться чем-то одним то нормально все. а если сначала одним а потом другим то в верхней или нижней точке полоса прокрутки почему-то вылетает с позиции либо скролл не становиться в исходную точку. В общем Как-то так. Подробнее посмотрите свойство в хелпе адобовском я там быстро разобрался.

Старый 31.12.2014, 18:32
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 9  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Да я тоже сначала на масках делал. Потом посмотрел производительность на мобилках и опечалился. Пришлось экстренно переделывать на scrollRect. Со скролл-барами проблем не возникало. Могу подкинуть готовый компонент со скролл-барами и преферансом.

Старый 31.12.2014, 18:35
PsychoTech вне форума Посмотреть профиль Отправить личное сообщение для PsychoTech Найти все сообщения от PsychoTech
  № 10  
Ответить с цитированием
PsychoTech
 
Аватар для PsychoTech

Регистрация: Aug 2014
Адрес: Где-то на поверхности планеты, какой хз
Сообщений: 113
а в чем тогда вопрос?

P.S. А можешь свой вариант с полосками скинуть?

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

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

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


 


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


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