Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Искажается размер шрифта при разном addChild (http://www.flasher.ru/forum/showthread.php?t=134305)

KIVagant 25.12.2009 22:52

Искажается размер шрифта при разном addChild
 
Здравствуйте.

У меня вопрос: что влияет на пропорции (размер) шрифта, когда я внедряю его в stage или в созданный объект типа Sprite?
Пример с конкретизацией проблемы:
Код AS3:

                // Создаем алфавит
                private function makeAlphabeth()
                {
                        this.alphabeth.graphics.lineStyle(); // alphabet у нас создан в классе как new Sprite()
                        this.alphabeth.graphics.beginFill(0x00FF00, 0);
                        this.alphabeth.graphics.drawRoundRect(0, 0, 400, 400, 10, 10);
                        this.alphabeth.graphics.endFill();
                        this.alphabeth.width = 400;
                        this.alphabeth.height = 75;
                        this.alphabeth.x = 250;
                        this.alphabeth.y = 450;
                        this.alphabeth.name = 'alphabeth';
                        var alphabeth:String = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧЩЩЪЫЬЭЮЯ';
                        for (var i = 1; i <= alphabeth.length; i++)
                        {
                                var o:TextField = this.makeAlphabethLetter(alphabeth.substr(i, 1));
                                o.x = (i >= 18) ? 10 * (i-18) : 10 * i;
                                o.y = (i >= 18) ? 30 : 0;
                                // ПРОБЛЕМА ЗДЕСЬ!
                                // Если здесь задать Global.stage.addChild() - то размер шрифтов нормальный, но если я прикрепляю буквы к this.alphabeth, то они становятся крохотные! Как такое может быть?
                                this.alphabeth.addChild(o);
                        }
                        Global.stage.addChild(this.alphabeth);
                }
                // Создаем одну букву
                private function makeAlphabethLetter(l:String)
                {
                        var o:TextField = new TextField();
                        o.type = TextFieldType.DYNAMIC;
                        o.width = 50;
                        o.height = 50;
                        //o.autoSize = TextFieldAutoSize.CENTER;
                        o.border = false;
                        o.multiline = false;
                        o.wordWrap = false;
                        o.background = false;
                        o.selectable = false;
                        o.defaultTextFormat = new TextFormat('Adventure', 36, 0x220066, null, null, null, null, null, 'center', null, null);
                        //o.addEventListener(MouseEvent.ROLL_OVER, function() { o.setTextFormat(overFormat); } );
                        //o.addEventListener(MouseEvent.ROLL_OUT, function() { o.setTextFormat(normalFormat); } );
                        o.text = l;
                        return o;
                }

Заранее благодарю откликнувшихся.

GFreemen 25.12.2009 23:01

дык, у Вас меняются пропорции Вашего "alphabeth", вот поетому и шрифт маленький.
Вы, же его scaleY уменьшаете больше чем в 5 раз, соответственно и все, что в него засовывается, тож по Y уменьшается в 5,3333 раз.

dimarik 25.12.2009 23:01

Возможно, из-за этого:
Код AS3:

this.alphabeth.width = 400;
this.alphabeth.height = 75;

Просто уберите эти строки.

KIVagant 25.12.2009 23:31

GFreemen, dimarik, спасибо большое. Проблема решена, ваш рецепт сработал.


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

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