![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2009
Сообщений: 23
|
Добрый день!
Есть пользовательское дерево, которое наследовано не от mx.tree, а от mx.AdvancedDataGrid. Т.е. фактически, это ADG с одной колонкой. Вопрос - реально ли как-то сделать в нем горизонтальный скролл, кроме, как положить его в контейнер и добавить отдельный скроллер. Т.е. меня интересует именно возможность как-то перехватить логику скроллирования по колонкам и переписать ее, это вообще реально? Спасибо за внимание. |
|
|||||
|
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 23
|
Хм, так это же itemRenderer. Я не совсем понял, как это использовать для решения моей задачи. Если добавить в него скролл, то он добавиться к каждому элементу, а не один на весь столбик. Да, у меня как раз используется кастомный спарковский рендерер. Я даже смог посчитать его ширину. Но когда я пытаюсь дереву поставить horizontalMaxPosition = ширина самого большого элемента, скролл все равно остается не активным.
Спасибо за внимание и буду рад ответам) Последний раз редактировалось OFFmind; 15.02.2012 в 19:49. |
|
|||||
|
Регистрация: Dec 2011
Сообщений: 9
|
Сделать колонку шире чем ADG и выставить horizontalScrollPolicy.
|
|
|||||
|
Регистрация: Aug 2009
Сообщений: 23
|
Проблема в том, что mx:ADG не позволяет скролить внутри колонки. Он скролит только по колонкам. Так что метод с выставлением ширины колонки не сработает.
Все таки в интернетах я нашел то что искал. А именно: как переопределить логику скроллирования. Грубо говоря, можно сделать примерно так: override protected function scrollHandler(event:Event):void { // Переопределяем логику для скролл эвента: var scrEvt:ScrollEvent = event as ScrollEvent; if(scrEvt.direction == ScrollEventDirection.HORIZONTAL) { // Берем части горизонтального скрола: var scrDownArrow:DisplayObject = horizontalScrollBar.getChildAt(3); var sctThumb:DisplayObject = horizontalScrollBar.getChildAt(2); var hPos:Number = Math.round((sctThumb.y - scrDownArrow.height) / (scrDownArrow.y - sctThumb.height - scrDownArrow.height) * 1000); // Двигаем контент нашего ADG listContent.move(hPos * -1, listContent.y); } // Ничего не делаем, если скрол вертикальный: else { super.scrollHandler(event); } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|