У меня есть несколько спрайтов, которые я пытаюсь сгруппировать с помощью addChild (). Вот какой-то псевдокод, демонстрирующий, чего я хотел бы достичь:

import nav.text.TextSprite; 

spr1:Sprite = new Sprite();
spr1.graphics.clear();
spr1.graphics.beginFill(0x000000);
spr1.graphics.drawRect(0,0,100,100);

txt1:TextSprite = new TextSprite;
txt1.text = "hello";

spr1.addChild(txt1);

//this is what isn't working:  the sprite is hidden but not the text
spr1.alpha = 0.0;

По какой-то причине я не могу заставить TextSprite правильно рисовать ... Все, что это спрайт с добавленным к нему TextField. Я думаю, что там все работает, но у меня может быть что-то не так с тем, чтобы убедиться, что все дочерние элементы TextSprites сгруппированы правильно.

Я должен отметить, что он позиционируется правильно; но свойство alpha не будет реагировать так, как я ожидал. Т.е. спрайт, к которому прикреплен TextField, позволяет установить альфа-канал, но текст остается видимым.

Любые мысли?

0
jml 5 Янв 2010 в 02:42

2 ответа

Лучший ответ

Вам нужно встроить шрифт, используя textfield.embedFonts = true. Если ваш текст исчезает, когда вы это делаете, как вы собираетесь внедрить шрифт (с помощью метатега Flex embed или с помощью Flash IDE?), Убедитесь, что вы не меняете толщину шрифта (устанавливая полужирный текст, когда вы встроили только шрифт с нормальным весом), и если вы используете текстовый формат, обязательно примените текстовый формат ПОСЛЕ того, как вы установили свойство textfield.text. Вы можете обойти это, используя textfield.defaultTextFormat.

1
Hanpan 5 Янв 2010 в 15:17
Спасибо. Я не знал, что нужно вставлять отдельно. У вас есть справочник по встраиванию с использованием Flash API? Мне кажется, что метатег Flex embed может быть более понятным для нас, но мне было бы интересно изучить обе методологии.
 – 
jml
5 Янв 2010 в 19:55
Я видел это: trajiklyhip.com/ blog / index.cfm / 2007/7/18 /…, который мне не очень нравится. Думаю, я бы предпочел использовать метатег embed, чем выпрыгивать из приложения Flex и собираться.
 – 
jml
5 Янв 2010 в 20:08
Может ли кто-нибудь сказать мне, действительно ли это единственный способ уменьшить размер файла? Я также видел это: liveocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/…, что может помочь ...
 – 
jml
5 Янв 2010 в 21:41
Вы можете использовать стандартный тег для встраивания, например: [Embed (source = "../assets/copy0855.ttf", fontWeight = "normal", fontFamily = "Copy", mimeType = "application / x-font-truetype") ] private static const Копировать: String; Затем: _textFormat.font = "Копировать";
 – 
Hanpan
6 Янв 2010 в 02:03
Иногда это приводит к тому, что Flex показывает странные ошибки синтаксического анализа шрифтов. Если вы их получили, попробуйте добавить это в параметры компилятора: -managers flash.fonts.AFEFontManager.
 – 
Hanpan
6 Янв 2010 в 02:04

Скорее всего, вам просто нужно встроить шрифт в текстовое поле. Попробуйте изменить x, y spr1 и посмотрите, движется ли txt1 вместе с ним. Если это действительно ребенок, то он отреагирует на новую позицию.

3
sberry 5 Янв 2010 в 02:46
Кажется, я помню, как коллега не мог повернуть текст, пока шрифт не был встроен, потому что альфа-уровень был бы на одной лодке.
 – 
invertedSpear
5 Янв 2010 в 02:49
Динамические текстовые поля с невстроенными шрифтами делают некоторые неприятные вещи, когда дело доходит до манипулирования их контейнерами. Например, попробуйте наложить маску на TextField с отключенным встраиванием, и вы никогда не увидите текст.
 – 
sberry
5 Янв 2010 в 02:53
Хорошо, я делаю mytextfield.embedFonts = true; сразу после того, как я установил свойства шрифта и формат через TextFormat (), и теперь я не вижу текст. Что я делаю неправильно? мне нужно это делать после того, как он добавлен в список отображения?
 – 
jml
5 Янв 2010 в 03:40
@ sberry2A: Он действительно реагирует на позиционные изменения ... Я уже тестировал это и должен был упомянуть об этом в своем исходном посте ... сейчас обновляю.
 – 
jml
5 Янв 2010 в 03:42