Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как в textField сделать IMG ссылкой? (http://www.flasher.ru/forum/showthread.php?t=111152)

akerka 17.04.2008 03:29

Как в textField сделать IMG ссылкой?
 
Вложений: 1
В тексте TextField.htmlText встречается тег img. При щелчке на нем должна вызываться определенная функция.

Следующий вариант ссылки не работает, если embedFonts==true:

Код:

...<a href="event:someArgument"><img src="someimage.jpg" id="someimage"></a>...
Событие просто не происходит. Причем, если внутри ссылки также находится текст - он реагирует на щелчок, а изображение - все равно нет.


Пробовал также получить доступ к изображению через getImageReference и подвесить на него event хотя бы таким образом, но событие по прежнему не происходит.

Как выполнить эту задачу- сделать img, находящийся в TextField, ссылкой, при сохранении использования встроенных во флэшку шрифтов?

DarkLight 17.04.2008 10:48

тег img закрывать не забывайте. Приведенный вариант при закрытом img работает.

akerka 17.04.2008 12:11

Боюсь, что закрытие непарных тегов тоже не помогает. Я прикрепил к теме исходник примера для иллюстрации проблемы

ulik 17.04.2008 13:19

Исходный код я не качал, но вот пример, в котором все работает:
Код:

var tf:TextField=new TextField();
tf.name="myText";
tf.width=200;
tf.multiline=true;
tf.autoSize=TextFieldAutoSize.LEFT;
tf.condenseWhite=true;
tf.wordWrap=true;
tf.htmlText="<a href='event:hello_world!'><img src='http://www.flasher.ru/forum/images/russian/flasher_logo.gif' id='logo' /></a>";
addEventListener(TextEvent.LINK, linkHandler);
addChild(tf);

function linkHandler(event:TextEvent) {
        trace("Получаем по клику: "+event.text);
}


alekslitvinenk 17.04.2008 13:36

уберите tValue.embedFonts = true;
и будет вам счастье :)

Alex Lexcuk 17.04.2008 13:41

ну, чет-то не понятно, как может быть
tValue.embedFonts = true;
когда, вроде бы внедренного шрифта, как бы и нету...
Он же должен быть в библиотеке, что бы стать внедренным.
Если все таки имеется желание его внедрить.
Может вы поймете, я не понял.

All examples can be found on
http://easeyourdigitallife.blogspot....3-example.html
and
http://easeyourdigitallife.blogspot....ple-using.html

derhab 17.04.2008 13:49

Цитата:

Сообщение от Alex Lexcuk
ну, чет-то не понятно, как может быть
tValue.embedFonts = true;
когда, вроде бы внедренного шрифта, как бы и нету...
Он же должен быть в библиотеке, что бы стать внедренным.

Есть внедренный шрифт, на сцене текстовые поля с внедренными глифами.

Цитата:

Сообщение от alekslitvinenk
уберите tValue.embedFonts = true;

И это не выход если нужен определенный шрифт..

alekslitvinenk 17.04.2008 14:12

Возможно, но в примере автора изображение не работало как ссылка именно потому что: embedFonts = true;

derhab 17.04.2008 14:22

да, но по идее оно должно работать...embedFonts = true не должен этому мешать

alekslitvinenk 17.04.2008 14:52

Почему не должен мешать ?
Вы можете в обычную html страницу внедрить шрифт ?
По видимому htmlText и embedFonts несовместими, так что лучше уж доконца следовать правилам html и использовать класс StyleSheet...

ulik 17.04.2008 16:55

Цитата:

По видимому htmlText и embedFonts несовместими
Это почему?! :)
Что вам не нравится в embedFonts? Просто embeнденные шрифты работают коряво (без использования сторонних менеджеров типа, FontsLab, FontManager и т.д.).
Но работают. Расскажу вам про один баг (еще с 6ой тянется).
Берем, создаем tf (TextField), создаем в либе шрифт (скажем verdana, 10),
создаем tfo (TextFormat) с этим шрифтом, задаем tf >> defaultTextFormat >> tfo и пихаем в tf нтмл строку, скажем "Hello <b>world!</b>". И что мы увидим? А увидим мы "Hello". А почему? А потому что полужирный мы не заембендили. Выхода два: в либе создаем... Ну, понятно.
Второй (корявый): кидаем на сцену tf, в свойствах текстового поля эмбендим verdana, 10 и нажимаем кнопочку "B" т.е. полужирный.

Именно из-за этого люди и отказываются от embedFonts , ну, или используют классы-менеджеры, которые используют внешние swf-ки со шрифтами. Ибо вес SWF с таким грузом в либе пугает :)

alekslitvinenk 17.04.2008 17:23

Никогда не любил связку флеш+шрифты...

ulik 17.04.2008 18:06

Полностью с тобой соглашусь.
Стараюсь использовать более или меннее распространенные.
Жаль, что flash.text.Font не сделали public метод, скажем load(request:URLRequest), который бы загружал в себя шрифты побайтно...
Представьте, как было бы удобно писать .load("fonts/agencycyr.ttf") и евент, чтоб зарегистрировать его после окончания загрузки. Эх...

akerka 17.04.2008 18:38

to ulik: здесь не используется embedFonts и шрифт несглажен.

to alekslitvinenk: нет, счастья мне так не будет - embedFonts==false вынуждает использовать системные шрифты которые выглядят иначе чем внедренные в других местах проекта. Как правило тоньше, ступенчатей - глобально хуже. А htmlText и embedFonts очень даже совместимы - пока не захочешь сделать ссылкой отдельную картинку.

На данный момент мне приходится делать ссылкой ВЕСЬ текстовый блок. Это значит - убеждать клиента что это очень круто и только для него. Но если в самом тексте будут присутствовать ссылки? Отказ от внедренных шрифтов тоже не катит - проект коммерческий и объяснить заказчику почему текст выглядит паршиво не делая из него дурака - невозможно.

У меня есть конечно предположения, типа, что когда делается сглаживание текста то визуализация делится на два потока - для сглаживаемых и несглаживаемых объектов и потому в textHtml-потоке между тегами ссылки просто ничего нет. Только что это дает?

На каком то иностранном сайте набрел на метод, где автор загружает не jpg а swf, а путь к картинке передает в индентификаторе этого swf. Флэш загружается, по родителю узнает свой идентификатор, парсит его, вычленяя путь к jpg и загружает его в себя. Но метод не только запутанный но и глючный, потому что htmltext перестает понимать размеры этой swf-jpg .

Главное - непонятно почему я не могу подвесить событие на саму картинку, получая к ней доступ напрямую - через getImageReference. Этот метод возвращает Loader. Может я путаюсь в этом классе, потому что подвесть клик мышкой на него я не смог.

а StyleSheet... она и так используется, но она не сглаживает текст, хоть попроси ее об этом. Проблема, что не смотрят клиенты, сглаженный текст или нет, они вообще не понимают разницы. Просто говорят что выглядит хреново.

alekslitvinenk 17.04.2008 19:21

Но вобще-то с embedFonts=true тоже работает, но с глюком:
сначала нажно нажать на картинку, потом отвести указатель мышки от нее и затем подвести и снова нажать...
Я думаю, что если похимичить на AS3 то можно как-нибудь замылить этот глюк...
Как вариант, можно использовать компонент стороннего разработчика, который парсит и рендерит html...


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

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