Влияние на htmlText в TextField
-
11-07-2019 - |
Вопрос
Во Flash, когда вы устанавливаете текст в объекте TextField с помощью свойства htmlText, изменение значения альфа больше не работает. Есть ли способ обойти это?
Решение
Здесь некоторая путаница.
<Ол>Работает ли альфа или нет, зависит от того, использует ли текстовое поле шрифты устройства, а не от того, использует ли он HTML. (Шрифты устройства используются каждый раз, когда у вас есть динамический / вводимый текст, и вы не встраиваете шрифт.)
Если возможно, просто опубликуйте Flash Player 10, который теперь поддерживает альфа для шрифтов устройства. (Обратите внимание, что вы должны установить свойство alpha
текстового поля или его родителя - выбор прозрачного цвета для самого текста не работает.)
Резервный вариант для v8-9 - принудительное кэширование растрового изображения с применением фильтра. Например, вы можете использовать тень с прозрачным цветом. Это заставляет Flash отображать текстовое поле в растровое изображение перед его отображением на экране, поэтому ваша альфа применяется к растровому изображению, и все работает. Р>
Для проигрывателя версии 7 или ниже нет возможности получить альфа для шрифтов устройства. Нужно либо встраивать шрифт, либо учиться жить без альфы. : D р>
Другие советы
Если вы обнаружите, что текстовое поле не отвечает свойству alpha
, возможно, это из-за того, что вы не ввели шрифт. Убедитесь, что вы нажали & Quot; Вставить ... & Quot; в свойствах текстового поля и выберите, скажем, " Basic Latin ".
Если вы обнаружите, что ваши htmlText
форматирования (например, <b>
и <i>
) не отображаются, вы должны убедиться, что эти (стилизованные) шрифты также встроены. Самый простой способ сделать это - создать скрытые или нестандартные динамические текстовые поля с нужными вам стилями (обязательно добавьте и шрифт!)
Вы можете сделать это без встраивания шрифта, используя blendMode, с небольшим ущербом для внешнего вида текста (я верю).
import flash.display.BlendMode;
import flash.text.TextField;
// later...
var tf:TextField = new TextField();
tf.blendMode = BlendMode.LAYER;
tf.alpha = 0.5;
Динамический текст не поддерживает свойство альфа (среди прочих). Я предполагаю, что установка его в текст HTML накладывает те же ограничения. Один из способов, который я нашел, заключается в том, чтобы разместить текстовое поле в мувиклипе и вместо этого установить альфа в мувиклипе.