Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Embed Fonts пара вопросов (http://www.flasher.ru/forum/showthread.php?t=129537)

MaxFX 03.09.2009 19:34

Embed Fonts пара вопросов
 
Возикла пара проблем при работе с текстом в TextField, внедрил все нужные мне сиволы и шрифты в нужный мне TextField, но при программном изменении текста на экране ничего не показывается. Каким образом можно это излечить.

И еще один вопрос, если много динамических текстовых полей и в каждый из них встроен один и тот же шрифт, то как это отразится на размере, не будет ли флеш для каждого поля хранить один и тот же шрифт много раз в ресурсах.

СлаваRa 03.09.2009 19:40

в классе использующем текстовое поле
Код AS3:

ваш_филд.embedFonts = true;

и будет работать

embed все равно будет только один раз, т.е. похожие символы embed'ид только один раз

MaxFX 03.09.2009 20:02

Цитата:

Сообщение от СлаваRa (Сообщение 848023)
в классе использующем текстовое поле
Код AS3:

ваш_филд.embedFonts = true;

и будет работать

embed все равно будет только один раз, т.е. похожие символы embed'ид только один раз

Сделал так же, но текст все равно не отрисовывается

СлаваRa 03.09.2009 21:14

скинь класс сюда

MaxFX 03.09.2009 21:23

Класс такой

Код AS3:

package GUI
{
        import flash.display.*;
        import flash.text.*;
 
        public class SoundButton extends SimpleButton
        {
                public function SoundButton ()
                {                       
                        ((upState as DisplayObjectContainer).getChildAt(3) as TextField).embedFonts = true;
                        ((downState as DisplayObjectContainer).getChildAt(3) as TextField).embedFonts = true;
                        ((overState as DisplayObjectContainer).getChildAt(3) as TextField).embedFonts = true;
                }
        }
}

В коде я делаю так:

Код AS3:

...
btnSound.addEventListener(MouseEvent.MOUSE_DOWN, btnSound_MouseDown);
...
 
private function btnSound_MouseDown(e: Event): void {
        SoundEnable = !SoundEnable;
 
        var txt: String = null;
 
        if (SoundEnable) {
                txt = "ВКЛ. ЗВУК";                               
        } else {
                txt = "ВЫКЛ. ЗВУК";
        }
 
        ((btnSound.upState as DisplayObjectContainer).getChildAt(3) as TextField).text = txt;
        ((btnSound.downState as DisplayObjectContainer).getChildAt(3) as TextField).text = txt;
        ((btnSound.overState as DisplayObjectContainer).getChildAt(3) as TextField).text = txt;
}

Шрифт внедрил непосредственно при редактировании TextField'а в самом fla (непрограммный способ)

Felicast 03.09.2009 21:43

во-первых: а если не использовать внедрение шрифта, у вас тоже текст не отображается?
во-вторых:
Цитата:

((btnSound.upState as DisplayObjectContainer).getChildAt(3) as TextField).text = txt;
это просто охренеть как нехорошо.
в-третьих: я все-таки рекомендую вам прислушаться, к тому что я писал в вашей предыдущей теме и отказаться от SimpleButton и использовать Sprite.

СлаваRa 03.09.2009 22:29

примите пост выше и у меня есть вопрос(вопросы) почему нельзя сделать свою кнопку?, и точно ли у вас embed шрифта в верхнем регистре?

ради интереса, попробуйте создайте, клип sButton(называйте как хотите), в ней сделайте кнопку с текстовым полем, embed шрифта для поля, в классе кнопки по мимо обработчиков событий нажатия и наведения, сделайте embedFonts, для поля(определите через getChildByName), равным true, и посмотрите что будет

MaxFX 03.09.2009 22:37

Цитата:

Сообщение от Felicast (Сообщение 848076)
во-первых: а если не использовать внедрение шрифта, у вас тоже текст не отображается?
во-вторых:

это просто охренеть как нехорошо.
в-третьих: я все-таки рекомендую вам прислушаться, к тому что я писал в вашей предыдущей теме и отказаться от SimpleButton и использовать Sprite.

Я уже понял что это изврат, просто кнопка только одна во всем приложении у которой контент меняется.

Dmitry Bogdanov 03.09.2009 22:54

Попробуйте после каждого изменения содержимого текстового поля
делать СетТекстФормат.

TextFieldN1.SetTextFormat(самTextFormat);

Или я ерунду говорю ?

MaxFX 03.09.2009 23:44

Переписал класс кнопки

Код AS3:

package GUI
{
        import flash.display.*;
        import flash.text.*;
        import flash.errors.*;
        import flash.events.*;
 
        public class ButtonSound extends MovieClip
        {
                public function get Text(): String
                {
                        return txtText.text;
                }
 
                public function set Text(val: String)
                {
                        txtText.text = val;                       
                }
 
                public function ButtonSound()
                {
                        stop();
                        this.buttonMode = true;
                        this.mouseChildren = false;
                        txtText.embedFonts = true;
                        InitializeGUIListeners();
                }
 
                private function InitializeGUIListeners()
                {
                        addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
                        addEventListener(MouseEvent.MOUSE_OUT, OnMouseOut);
                        addEventListener(MouseEvent.MOUSE_OVER, OnMouseOver);
                }
 
                private function OnMouseDown(e: Event)
                {
                        gotoAndStop(3);
                }
 
                private function OnMouseOut(e: Event)
                {
                        gotoAndStop(1);
                }
 
                private function OnMouseOver(e: Event)
                {
                        gotoAndStop(2);
                }
        }
}

Заэмадил весь шрифт со всеми символами, но все равно пустое место после нажатия кнопки. И как я понял к txtText надо обратиться в каждом фрейме чтобы заменить текст при всех состояниях кнопки. Можно конечно все одним фреймом сделать, только не в моем случае, так как в кнопке еще достаточно сложная анимация задника.

Добавлено через 2 часа 21 минуту
Неужели нет нормально способа изменять текст в случае встроенных шрифтов?


Часовой пояс GMT +4, время: 18:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.