Воздействие на htmlText в TextField

Во Flash, когда вы задаете текст в объекте TextField с помощью свойства htmlText, изменение альфа-значения больше не работает. Есть ли способ обойти это?


person Paul Sheldrake    schedule 28.11.2008    source источник


Ответы (4)


Некоторая путаница здесь.

  1. Работает ли альфа-канал или нет, зависит от того, использует ли текстовое поле шрифты устройства, а не от того, использует ли оно HTML. (Шрифты устройства используются каждый раз, когда у вас есть динамический/вводимый текст, и вы не встраиваете шрифт.)

  2. Если возможно, просто опубликуйте для Flash player 10, который теперь поддерживает альфа-канал для шрифтов устройств. (Обратите внимание, что вы должны установить свойство alpha текстового поля или его родителя — выбор прозрачного цвета для самого текста не работает.)

  3. Запасной вариант для версии 8-9 — принудительное кэширование растрового изображения путем применения фильтра. Например, вы можете использовать тень с прозрачным цветом. Это приводит к тому, что Flash преобразует текстовое поле в растровое изображение, прежде чем отрисовывать его на экране, поэтому альфа-канал применяется к растровому изображению, и все работает.

  4. Для проигрывателя версии 7 или ниже нет возможности получить альфа-канал для шрифтов устройства. Приходится либо встраивать шрифт, либо учиться жить без альфы. :D

person fenomas    schedule 03.12.2008

Если вы обнаружите, что текстовое поле не отвечает свойству alpha, вероятно, это связано с тем, что вы не внедрили шрифт. Убедитесь, что вы нажали «Вставить...» в свойствах текстового поля и выбрали, скажем, «Основную латиницу».

Если вы обнаружите, что ваше форматирование htmlText (например, <b> и <i>) не отображается, вы должны убедиться, что эти (стилизованные) шрифты также встроены. Простой способ сделать это — создать скрытые или динамические текстовые поля вне сцены с нужными вам стилями (не забудьте также внедрить шрифт!)

person aaaidan    schedule 30.11.2008

Вы можете сделать это без встраивания шрифта, используя blendMode, с небольшой жертвой внешним видом текста (я полагаю).

import flash.display.BlendMode;
import flash.text.TextField;
// later...
var tf:TextField = new TextField();
tf.blendMode = BlendMode.LAYER;
tf.alpha = 0.5;
person Jesse Millikan    schedule 01.12.2008

Динамический текст не поддерживает свойство alpha (среди прочего). Я предполагаю, что установка его на текст HTML накладывает те же ограничения. Один из способов, который я нашел вокруг этого, состоит в том, чтобы содержать текстовое поле в клипе ролика и вместо этого устанавливать альфа-канал для клипа ролика.

person Chris    schedule 28.11.2008
comment
Динамический текст поддерживает свойство альфа. Вы должны внедрить шрифт. - person aaaidan; 01.12.2008