![]() |
Смайлы в TextArea
Подскажите плз. почему когда листенишь ScrollEvent.SCROLL у TextArea то verticalScrollPosition показывает значение предыдущщего скроллинга, и какое событие нужно листенить чтобы после скролла получить реально значение verticalScrollPosition и других свойств
TextArea. спасибо |
Кажется, там нужен validateNow выполнить. Не смотрел.
|
да, слышал про такую штуку :)
validateNow называется, пробовал - не помогает. |
Собери нерабочий пример.
|
не буду приводить код полностью но в целом проблема сводится вот к такой:
Код:
<?xml version="1.0" encoding="utf-8"?> |
Заглянул в сорцы TextArea и увидел там любопытные строчки:
Код:
override protected function scrollHandler(event:Event):voidКод:
protected function scrollHandler(event:Event):voidКстати, event.position выдает верное значение. Что мешает его использовать? |
Дело в том что я пытаюсь добавить смайлы в этот самый TextArea,
для этого экстендю TextArea, и делаю внутренний TextField публичным. У TextField есть метод - getCharBoundaries, который возвращает Rectangle в котором находится определённая буква ( в моём случае - смайл ). Так вот после скролла этот метод getCharBoundaries внетреннегно текстфилда тоже выдаёт неправильное значение :( Спасибо большое за ответ, думаю теперь я разберусь. |
Тебе нужно отложить выполнение до следующего кадра хотя бы. Или на некоторое кол-во миллисекунд. Или переписать scrollHandler.
|
удобно таком случае пользоваться callLater -
Код:
callLater(function():void |
Примерчик заодно:
http://livedocs.macromedia.com/flex/.../00001438.html Хотя, раз наследуемся от TextArea, то можно и переписать scrollHandler. Не знаю, правда, может это к глюкам каким-нибудь привести или нет… |
в своём классе наследующем TextArea делаю примерно так:
Код:
override protected function scrollHandler(event:Event) : void { |
А что с scrollPolicy?
|
verticalScrollPolicy поменял на on - ничего не изменилось. :)
|
На auto надо.
|
так по умолчанию итак auto.
фишка в том что возникает ситуация когда verticalScrollPosition меняется а положение текста - нет. |
Это как-нибудь связано с тем, что ты переписал scrollHandler или нет?
|
нет... это всегда такое поведение у TextArea.
из хелпа: Line number of the top row of characters that is currently displayed. The default value is 0. на самом деле это не так, легко увидеть если просто в TextArea вбить текст который помещается в неё - скролл будет, будет меняться verticalScrollPosition, но текст , а соответственно и номер верхней строки будут оставаться на месте. |
Ну опять же, ты можешь переписать любую часть TextArea так, как нужно.
|
Цитата:
|
Ну как есть, я уже начинаю радоваться, что я не работаю с компонентами постоянно, а только вот в таких случаях :D
Ковыряться в чужих классах и искать косяки занятие не очень благодарное :D |
проблема решилась использованием scrollV внутреннего текстфилда TextArea вместо verticalScrollPosition.
Теперь решаем другую - не срабатывает событие скролла если скролить колесом - будем думать :) |
Вот они, флексовые компоненты :D
Ну я могу лишь посоветовать подписать scrollHandler. Хотя он вообще-то работает при скролле. Видимо, ты где-то что-то переопределил. |
помогите разобратся плз. похоже я не допонимаю чего-то :)
TextArea наследуется от ScrollControlBase, при этом в конструкторе ScrollControlBase приписывается листенер для MouseEvent.MOUSE_WHEEL, mouseWheelHandler: Код:
protected function mouseWheelHandler(event:MouseEvent):voidКод:
override protected function mouseWheelHandler(event:MouseEvent) : void { |
реагирует текстовое поле которое находиться в текст арии, а текст ария слушает это событие у этого текстового поля (это я так предположил :D)
|
lephik, но TextField-у не прикажешь, он крутится же)
|
а... блин панял спасибо чуваки ;)
похоже всётаки не зря адобы в SDK сорсы фреймворка запхали.... |
Цитата:
|
| Часовой пояс GMT +4, время: 07:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.