Flash AS3 — прокрутка динамического текстового поля до определенной части, как привязка HTML

Мы создаем флеш-сайт с CMS на задней панели, и мы позволяем администратору размещать якоря внутри контента. Позже мы создали уменьшенную версию всего контента, чтобы отображалась только небольшая часть, а затем кнопка [подробнее]. Которые добавляют новый слой поверх каждой вещи, действующей как всплывающее окно, и он заполняется полным содержимым.

Теперь мы хотели бы прокрутить этот текст внутри всплывающего окна до той части, на которой была нажата кнопка [подробнее].

Наиболее распространенным примером в HTML является ссылка go to top в нижнем колонтитуле на большинстве сайтов, которая перемещает весь документ наверх.

Удачного кодирования.


person Aamir Mahmood    schedule 08.01.2011    source источник


Ответы (1)


Вы знаете сокращенный текст и знаете более длинный текст, из которого он взят — почему бы не использовать textField.getCharBoundaries ()?

Попробуй это:

var index:int = textField.text.indexOf (shortText) + shortText.length;
var yposition:Number = textField.getCharBoundaries (index).y;

yposition теперь должен относиться к верхнему левому углу первой буквы после вхождения shortText. Так что даже если ваш укороченный текст находится не в первых строках, а где-то внутри более длинного текста, вы сможете узнать, где прокручивать.

person weltraumpirat    schedule 08.01.2011
comment
Хм, это немного сложно, администратор может иметь более 1 сокращенного текста на странице, и, поскольку они исходят из cms, администратор применил цвет шрифта и другие теги. Будут ли html-теги учитываться в text.length? а также может случиться так, что два сокращенных текста будут иметь одинаковую длину. Исходная проблема, с которой мы столкнулись, объясняется здесь stackoverflow. com/questions/4530044/, но мы ничего не могли с этим поделать, поэтому пробуем это решение. Якорь один - person Aamir Mahmood; 08.01.2011
comment
getCharBoundaries() возвращает Rectangle. Просто прокрутите до textField.getCharBoundaries (shortText.length).y - person weltraumpirat; 08.01.2011
comment
@weltraumpirat: спасибо за ваш код. Я начал работу над тестовым случаем сразу после вашего первого отзыва, и это сработало, но есть небольшая проблема. если я ищу номер, который не находится в видимой области (я использовал 1,2,3 ... в каждой строке с тегами <br>, чтобы он попадал в другую строку). Видимая область показывает мне только 10 строки, это дает мне правильные x, y и т. д., но если я пытаюсь найти строку 13, которая не видна, она возвращает null для textField.getCharBoundaries (index) или выдает ошибку textField.getCharBoundaries (index).y. - person Aamir Mahmood; 08.01.2011
comment
Я знаю, что JSBIN - не лучшее место для обмена кодом FLASH AS, но все же я опубликовал весь класс. Вот ссылка jsbin.com/izibi5/edit - person Aamir Mahmood; 08.01.2011
comment
Извините, я ожидал, что вы будете в маске. Задайте для TextField значение TextFieldAutoSize.LEFT, а затем укажите ширину. Он будет расширяться только вниз. Затем установите маску Sprite с размерами, которые вы хотите, чтобы ваш текст имел. Затем вы можете прокрутить текстовое поле, установив textField.y = -textField.getCharBoundaries().y; Таким образом, вы даже можете добавить красивый и плавный Tween, если хотите. - person weltraumpirat; 08.01.2011
comment
Мы реализуем это сегодня. - person Aamir Mahmood; 10.01.2011
comment
Круто, это сработало, хотя пришлось много анализировать html и прочее, и все же это 80% финала, но; Да, ваш совет сработал. Просто примечание: если контент добавлен, но не исчез, он вернет null. Вот сайт, над которым мы работаем pk.dynamiconlinesystems.com/mc_main. Мы добавим эту функцию на страницу членства. Я отвечу на этот комментарий после загрузки завтра. Лучший - person Aamir Mahmood; 10.01.2011
comment
Здравствуйте, weltraumpirat, пожалуйста, проверьте обновления на pk.dynamiconlinesystems.com/mc_main. Если вы откроете сайт, перейдите на страница членства из верхней навигации. Когда откроется страница, вы увидите (r) и значки электронной почты, которые должны были сочетаться с проблемой всплывающих изображений.. поэтому мы создали шрифт для маркеров и встроили его в cms. Прокрутите вниз, и вы увидите ссылку БОЛЬШЕ›, для нас, когда мы пытаемся найти строку, она не работала с разрывами строк, поэтому не может ее найти. Я добавил больше счетчика в поле и установил размер шрифта на 0. Он не виден, но да, это сработало. Еще раз спасибо. - person Aamir Mahmood; 12.01.2011