Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.09.2011, 09:52
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 1  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
По умолчанию Как расположить активные элементы подряд в несколько строк?

Здравствуйте!

Всё перепробовал, никак не могу найти решение....
Необходимо создать некий контейнер, который будет отображать ссылки как текст, точнее как слова в тексте с переходом на новую строчку. При этом каждая ссылка должна иметь onClick реакцию. Пример отображения:

Link1 SomeLink2 Link3 \*
Link4 AnatherLink5 \*
AndOneMoreLink6 \*

*\ - правая граница группировки

Пробовал поместить всё в разные контейнеры (Group, VGroup, HGroup, TileGroup) - всё не то.

TileGroup не подходит, потому что группирует элементы как таблицу Excel.
Пробовал все ссылки в ТехтArea разместить, тогда всё отображается так как надо, но onClick один для всех получается.

Старый 21.09.2011, 10:07
trng вне форума Посмотреть профиль Отправить личное сообщение для trng Найти все сообщения от trng
  № 2  
Ответить с цитированием
trng

Регистрация: Jun 2011
Сообщений: 212
Можно попробовать TileGroup и собственный ItemRenderer, в котором обрабатывается событие click, а при создании программно изменяется ширина.

Старый 21.09.2011, 10:21
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 3  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
Цитата:
Сообщение от trng Посмотреть сообщение
Можно попробовать TileGroup и собственный ItemRenderer, в котором обрабатывается событие click, а при создании программно изменяется ширина.
хммм.... думаю не сработает.... т.к. будет меняться ширина всех столбцов в TileGroup. А мне надо чтобы столбцов вообще не было.

Идеальный вариант, как мне видится это VGroup с переносом строк, но такого свойства я не нашёл.

Старый 21.09.2011, 12:03
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
http://www.flasher.ru/forum/showpost...66&postcount=4
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 21.09.2011, 12:03
trng вне форума Посмотреть профиль Отправить личное сообщение для trng Найти все сообщения от trng
  № 5  
Ответить с цитированием
trng

Регистрация: Jun 2011
Сообщений: 212
Если нужны именно гипертекстовые ссылки - то зачем click()?
TextArea + html + <a href>.

Кстати у TextArea есть TextFlow, а у TextFlow есть событие click().

Старый 21.09.2011, 12:12
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 6  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
в том то и дело что на onClick надо открыть не URL, а выполнить внутреннюю функцию с параметрами.

TextArea пробовал как отдельные элементы. да, клик вешаю без проблем.... но как расположить их друг за дружкой - проблема.... с TextFlow получается только в один элемент всё затащить, но тогда клик только один на всех, понятно что в html можно URL на каждую ссылку прописать.... но мне нужно функцию выполнить..... вот такая делема

Старый 21.09.2011, 13:02
trng вне форума Посмотреть профиль Отправить личное сообщение для trng Найти все сообщения от trng
  № 7  
Ответить с цитированием
trng

Регистрация: Jun 2011
Сообщений: 212
Вот так работает:
Код AS3:
<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" />
Результат trace:
! href1
! href2
! href3

НО! Кликать надо с ctrl


Последний раз редактировалось trng; 21.09.2011 в 13:05. Причина: в var s:String добавлен <br>
Старый 21.09.2011, 13:16
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 8  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Да ну! Как-то это все через одно место.
Задача интересная и алатар (спасибо ему) дал рабочий компонент, куда можно помещать кнопки или линкованные кнопки.
Если такое нужно было бы делать по-быстрому, то я бы делал "в лоб": высчитывал ширины элементов и вставлял бы их в абсолютно ориентированный контейнер. Достаточно просто, хотя и не высокопрофессионально

Старый 21.09.2011, 13:23
trng вне форума Посмотреть профиль Отправить личное сообщение для trng Найти все сообщения от trng
  № 9  
Ответить с цитированием
trng

Регистрация: Jun 2011
Сообщений: 212
FlowLayout.as - 304 строки кода.
Через TextFlow - 27 строк кода.

Кстати, задача звучала "нужен контейнер, который будет отображать ссылки как текст, точнее как слова в тексте.

Старый 21.09.2011, 14:06
billion вне форума Посмотреть профиль Отправить личное сообщение для billion Посетить домашнюю страницу billion Найти все сообщения от billion
  № 10  
Ответить с цитированием
billion

Регистрация: Jan 2002
Сообщений: 149
Отправить сообщение для billion с помощью ICQ
trng

Благодарю! эффективный код! работает.

добавил ещё функциональности - реагирование на наведение мышки со сменой курсора:


Код AS3:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:02.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.