|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Как расположить активные элементы подряд в несколько строк?
Здравствуйте!
Всё перепробовал, никак не могу найти решение.... Необходимо создать некий контейнер, который будет отображать ссылки как текст, точнее как слова в тексте с переходом на новую строчку. При этом каждая ссылка должна иметь onClick реакцию. Пример отображения: Link1 SomeLink2 Link3 \* Link4 AnatherLink5 \* AndOneMoreLink6 \* *\ - правая граница группировки Пробовал поместить всё в разные контейнеры (Group, VGroup, HGroup, TileGroup) - всё не то. TileGroup не подходит, потому что группирует элементы как таблицу Excel. Пробовал все ссылки в ТехтArea разместить, тогда всё отображается так как надо, но onClick один для всех получается. |
|
|||||
Регистрация: Jun 2011
Сообщений: 212
|
Можно попробовать TileGroup и собственный ItemRenderer, в котором обрабатывается событие click, а при создании программно изменяется ширина.
|
|
|||||
Цитата:
Идеальный вариант, как мне видится это VGroup с переносом строк, но такого свойства я не нашёл. |
|
|||||
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Jun 2011
Сообщений: 212
|
Если нужны именно гипертекстовые ссылки - то зачем click()?
TextArea + html + <a href>. Кстати у TextArea есть TextFlow, а у TextFlow есть событие click(). |
|
|||||
в том то и дело что на onClick надо открыть не URL, а выполнить внутреннюю функцию с параметрами.
TextArea пробовал как отдельные элементы. да, клик вешаю без проблем.... но как расположить их друг за дружкой - проблема.... с TextFlow получается только в один элемент всё затащить, но тогда клик только один на всех, понятно что в html можно URL на каждую ссылку прописать.... но мне нужно функцию выполнить..... вот такая делема |
|
|||||
Регистрация: Jun 2011
Сообщений: 212
|
Вот так работает:
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" initialize="windowedapplication1_initializeHandler(event)"> <fx:Script> <![CDATA[ import flashx.textLayout.events.FlowElementMouseEvent; import mx.events.FlexEvent; protected function windowedapplication1_initializeHandler(event:FlexEvent):void { import flashx.textLayout.conversion.TextConverter; import flashx.textLayout.conversion.ConversionType; var s:String = 'bla <a id="href1">href1</a> bla <a id="href2">href2</a><br /><a id="href3">href3</a>'; ta.textFlow = TextConverter.importToFlow(s, TextConverter.TEXT_FIELD_HTML_FORMAT); ta.textFlow.addEventListener(FlowElementMouseEvent.CLICK, hrefClick); function hrefClick(e:FlowElementMouseEvent):void { trace("! ", e.flowElement.id); } } ]]> </fx:Script> <s:TextArea id="ta" x="13" y="16" width="273" height="224" /> ! href1 ! href2 ! href3 НО! Кликать надо с ctrl Последний раз редактировалось trng; 21.09.2011 в 13:05. Причина: в var s:String добавлен <br> |
|
|||||
Регистрация: Jan 2010
Сообщений: 211
|
Да ну! Как-то это все через одно место.
Задача интересная и алатар (спасибо ему) дал рабочий компонент, куда можно помещать кнопки или линкованные кнопки. Если такое нужно было бы делать по-быстрому, то я бы делал "в лоб": высчитывал ширины элементов и вставлял бы их в абсолютно ориентированный контейнер. Достаточно просто, хотя и не высокопрофессионально |
|
|||||
Регистрация: Jun 2011
Сообщений: 212
|
FlowLayout.as - 304 строки кода.
Через TextFlow - 27 строк кода. Кстати, задача звучала "нужен контейнер, который будет отображать ссылки как текст, точнее как слова в тексте. |
|
|||||
trng
Благодарю! эффективный код! работает. добавил ещё функциональности - реагирование на наведение мышки со сменой курсора: var s:String = '<a id="href1">href1</a> <a id="href2">href2</a> <a id="href3">href3</a>'; var cfg:Configuration = TextFlow.defaultConfiguration; var normalFmt:TextLayoutFormat = new TextLayoutFormat(cfg.defaultLinkNormalFormat); normalFmt.color = 0x0000FF; normalFmt.textDecoration = TextDecoration.NONE; var hoverFmt:TextLayoutFormat = new TextLayoutFormat(cfg.defaultLinkHoverFormat); hoverFmt.color = 0x0000FF; hoverFmt.textDecoration = TextDecoration.UNDERLINE; cfg.defaultLinkNormalFormat = normalFmt; cfg.defaultLinkHoverFormat = hoverFmt; ta0.textFlow = TextConverter.importToFlow(s, TextConverter.TEXT_FIELD_HTML_FORMAT, cfg); ta0.textFlow.addEventListener(FlowElementMouseEvent.CLICK, hrefClick); function hrefClick(e:FlowElementMouseEvent):void { Alert.show('111= '+e.flowElement.id); } |
Часовой пояс GMT +4, время: 12:02. |
|
« Предыдущая тема | Следующая тема » |
|
|