Вопрос

Во 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 накладывает те же ограничения. Один из способов, который я нашел, заключается в том, чтобы разместить текстовое поле в мувиклипе и вместо этого установить альфа в мувиклипе.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top