|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Ссылки в Spark TextArea: не отрабатываются клики
Всем привет.
В Spark TextArea-поле добавляю ссылку посредством преобразования TLF-разметки в textFlow. В href-атрибуте ссылки стоит абсолютный URL. Ссылка добавляется, выделена синим цветом и подчёркиванием. Но вот беда, клик не отрабатывается. В интернетах пишут, что клики отрабатываются в том случае, если поставить editable="false", но печаль в том, что не помогает. Попробовал поиграться с текстовым полем по-разному:
Добавлено через 26 часов 5 минут Натолкнулся в этой связи на проблему, сути которой не понимаю. Заключается она в том, что дочерние элементы одного TextFlow, будучи скопированными в другой TextFlow, теряют кликабельность. Ниже исходник примера. Может коряво ссылку вставляю, но суть не в этом. Главное, что если бы я просто присвоил textFlow моей TextArea полученный newTextFlow, то ссылка бы работала, а вот в результате deepCopy элементов будто что-то теряется. Может кто-то поможет понять, что и где я потерял? <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="application_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ import flashx.textLayout.conversion.ConversionType; import flashx.textLayout.conversion.TextConverter; import flashx.textLayout.elements.TextFlow; import mx.events.FlexEvent; private function application_creationCompleteHandler(event:FlexEvent):void { // Получаем исходную разметку var TLFMarkup:String = TextConverter.export(textArea.textFlow, TextConverter.TEXT_LAYOUT_FORMAT, ConversionType.STRING_TYPE) as String; // Заменяем в исходной разметке "Hello" на ссылку var pattern:RegExp = /Hello/gi; var newTLFMarkup:String = TLFMarkup.replace(pattern, '</span><a href="http://flasher.ru" target="_blank">$&</a><span>'); // Создаём новый TextFlow с новой разметкой и копируем его детей в исходный TextFlow поля ввода var newTextFlow:TextFlow = TextConverter.importToFlow(newTLFMarkup, TextConverter.TEXT_LAYOUT_FORMAT); for (var i:uint = 0; i < newTextFlow.numChildren; i++) { textArea.textFlow.addChild(newTextFlow.getChildAt(i).deepCopy()); } textArea.textFlow.flowComposer.updateAllControllers(); } ]]> </fx:Script> <s:TextArea id="textArea" text="Hello, World!" editable="false" /> </s:Application>
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого Последний раз редактировалось Хемуль; 22.02.2011 в 22:51. |
|
|||||
В данном случае можно сделать такой финт ушами:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="application_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ import flashx.textLayout.conversion.ConversionType; import flashx.textLayout.conversion.TextConverter; import mx.events.FlexEvent; private function application_creationCompleteHandler(event:FlexEvent):void { // Получаем исходную разметку var TLFMarkup:String = TextConverter.export(textArea.textFlow, TextConverter.TEXT_FIELD_HTML_FORMAT, ConversionType.STRING_TYPE) as String; // Заменяем в исходной разметке "Hello" на ссылку var pattern:RegExp = /Hello/gi; var newTLFMarkup:String = TLFMarkup.replace(pattern, '</span><a href="http://flasher.ru" target="_blank">$&</a><span>'); TLFMarkup += newTLFMarkup; textArea.textFlow = TextConverter.importToFlow(TLFMarkup, TextConverter.TEXT_FIELD_HTML_FORMAT); } ]]> </fx:Script> <s:TextArea id="textArea" text="Hello, World!" editable="false" /> </s:Application> Необновляемые ссылки это вроде как баг в TLF 1.1. Где-то попадалось, что в 2.0 починили. |
|
|||||
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Спасибо. ^_^
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
Часовой пояс GMT +4, время: 22:08. |
|
« Предыдущая тема | Следующая тема » |
|
|