![]() |
|
||||||||||
|
|||||
|
[+5 02.10.08]
Регистрация: Aug 2006
Сообщений: 10
|
для начала, помогла тема чата со смайлами http://www.flasher.ru/forum/showthread.php?t=88524 (спасибо ребятам)
сделал свой чат с помощью компоненты TextArea и столкнулся с проблемой скроллинга (немного урезал для понимания): public function convert2Smile():void { setSmiles(); //здесь получаем arrayIco - массив со смайлами для текущего состояния чата if (chatScr) { //autoScrool chat.verticalScrollPosition = chat.maxVerticalScrollPosition; } getSmiles(chat.verticalScrollPosition); //размещение смайлов } public function getSmiles(Y:Number = 0):void { var tf:TextField = chat.textField;//chat - собственно, сам компонент //var i = tf.getLineOffset(tf.scrollV-1); // было до скроллинга if (tf.scrollV == Y+1) { tf.scrollV = Y; } var i = tf.getLineOffset(Math.max(Y-1,tf.scrollV-1)); var b = tf.getCharBoundaries(i); clearSmiles();//удаляем смайлы (pictures) pictures = new MovieClip(); for (var k=0; k<arrayIco.length; k++) { var z = tf.getCharBoundaries(arrayIco[k].x); if (z != null && b != null) { if (z.y >= b.y && (z.y < (b.y + tf.height - 10))) { showPicture(z.x+1, z.y+5-b.y, arrayIco[k].type); //рисование самого смайла } } } addChild(pictures); //добавляем смайлы } и... происходит смещение смайлов на одну строку вверх, если скроллинг идет вверх и вниз, если - вниз.. изменил: private function announceEvent(event:ScrollEvent):void { getSmiles(int(event.position)); //это для ппеременной Y в getSmile } что-то я заблудился или глаз замылил уже, может кто решал такую проблему? Просьба, не предлагать написать свой скроллинг и т.д. Есть задача и ее надо решить. Если что не понятно в объяснении, спросите - уточню. Заранее спасибо. Добавлено через 19 часов 32 минуты Видимо, сложновато? Может, надо отслеживать событие отпускания кнопки мыши после скроллинга, когда уже само текстовое поле окончательно обновится, ибо связываю сдвиг смайлов с некорректным отображением позиции скроллинга? Но не похоже ли это на грязный хак? Последний раз редактировалось Squtter; 12.12.2008 в 19:48. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:29. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|