JSON как данные HTML во Flex - Гиперссылка - PullRequest
1 голос
/ 18 февраля 2010

Я использую JSON для анализа HTML-данных с помощью настраиваемых HTML-тегов во Flex.Поддержка Flex в HTML минимальна, поэтому мне интересно, можно ли сделать простой эффект смены цвета шрифта на этих ссылках.В настоящее время я обнаружил, что Flex поддерживает только несколько HTML-тегов, но также поддерживает CSS с помощью ударных CSS-методов Flex.

Могу ли я манипулировать HTML-кодом, записанным в моих файлах JSON, через внешний файл CSS?Или лучше использовать простой тег с файлом JSON?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2010

Я не часто использую Flex, поэтому не очень глубоко разбираюсь во фреймворке нужно что-то похожее:

сделать простой ролловер изменения цвета шрифта эффект

Вот фрагмент:

var linkRegEx:RegExp = new RegExp("(https?://)?(www\\.)?([a-zA-Z0-9_%]*)\\b\\.[a-z]{2,4}(\\.[a-z]{2})?((/[a-zA-Z0-9_%]*)+)?(\\.[a-z]*)?(:\\d{1,5})?","g");
var link:String = 'generic links: www.google.com http://www.yahoo.com  stackoverflow.com';
link = addLinks(linkRegEx,link);
textField.htmlText = link;//textField is a TextField I have on stage

function addLinks(pattern:RegExp,text:String):String{
    var result = '';
    while(pattern.test(text)) result = text.replace(pattern, "<font color=\"#0000dd\"><a href=\"$&\">$&</a></font>");
    if(result == '') result+= text;//if there was nothing to replace
    return result;
}

Я просто использовал тег встроенного шрифта, css может быть лучше. Вот мой оригинальный вопрос .

НТН, George

0 голосов
/ 18 февраля 2010

Краткий ответ: я не думаю, что есть волшебная пуля для этого. Это будет очень больно.

Вы можете начать с расширения класса Text таким образом, чтобы добавить статическое свойство StyleSheet (например, styleSheet: StyleSheet = null). Затем создайте массив, который содержит следующие стили, единственные поддерживаемые Flex:

listOfStyles:Array = ['fontSize', 'color', 'fontWeight', 'fontFamily', 'fontStyle', 'textDecoration'];

Затем вам нужно инициализировать StyleManager.selectors, создавая массив селекторов, которые вы собираетесь использовать. По сути, вы находите тег «A» и добавляете к нему описанный выше listOfStyles, а затем создаете новый CSSStyleDeclaration для каждого из этих стилей.

Это позволит вам применять вышеназванные стили к свойству htmlText вашего расширенного класса. Все идет нормально. Это позволяет вам устанавливать различные стили для ваших тегов привязки при загрузке, используя внешнюю таблицу стилей. Однако применить эффект опрокидывания, когда каждая ссылка меняет цвет при опрокидывании в HTML, будет проблематично, поскольку MouseEvent.MOUSE_OVER будет применяться к классу в целом, а не к отдельным элементам HTML в нем. Вы должны выяснить, была ли мышь над привязкой в ​​этом HTML-тексте (не невозможно, но у меня нет времени на это прямо сейчас) и изменить свой селектор в этом. Это будет связано с получением диапазона текста, а это всегда означает большую работу. Мне пришлось возиться с этим, когда клиент хотел, чтобы в текстовом потоке появлялись смайлики (что-то еще реализация HTML в Flex не поддерживает), и это было чрезвычайно мрачно.

Я полагаю, что Flex 4 изначально добавит больше поддержки для такого рода вещей, но я не исследовал это специально.

Извините, у меня нет волшебной пули для вас, но я надеюсь, что это проливает немного света на эту тему.

...