Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   сложности с вращением картинки с нанесенным текстом (http://www.flasher.ru/forum/showthread.php?t=174426)

Nikolay00700 25.01.2012 11:53

сложности с вращением картинки с нанесенным текстом
 
Возникла следующая проблема:

я создал класс в котором поверх растровой картинки нанесено поле textfield.

Далее создаю объект этого класса и начинаю вращать при помощи rotation.

Но почему-то при вращении объекта отображение текста исчезает. и появляется только тогда, когда rotation=0

Как сделать чтобы картинка вращалась вместе с нанесенным на неё текстом?

Inet_PC 25.01.2012 12:14

embedFonts, не? В 10 плеере вроде можно и без. Может свойства rotationX/Y/Z помогут. Начиная с 10 плеера проблем вроде с этим не было, хотя...
А вообще неплохо бы и класс сам показать, может в нем ошибка.

ObOs 25.01.2012 12:52

Скорее всего надо встраивать шрифт используемый в вашем textfield.

vorodis2 25.01.2012 13:13

var textMy:TextField=new TextField();
textMy.embedFonts = true;//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Вот это поможет
textFormat = new TextFormat("Arial", 8, 0, true);
textMy.text = "text";
textMy.setTextFormat(textFormat);

Nikolay00700 25.01.2012 18:02

vorodis2 - Не помогает!

На скорую руку набросал пример класса, который бы проиллюстрировал эту проблему.

Этот класс выводит картинку, а на ней надпись.
При каждом клике на картинку картинка с надписью должна слегка вращаться по часовой стрелке (центр вращения - центр картинки).

картинка-то вращается, а вот текст просто исчезает при повороте...

Код AS3:

package 
{
        import flash.text.TextField;
        import flash.display.Sprite;
        import flash.text.TextFormat;
        import flash.events.*;
 
        public class Proba  extends Sprite
        {
                public var image:some_image = new some_image();//картинка 40х40
                private var f_text:TextField = new TextField();
                private var text_format:TextFormat = new TextFormat();
                private var Contein:Sprite = new Sprite();
 
                public function Proba()
                {
                        addChild(image);
                        image.x = -50;
                        image.y = -50;
                        image.width = 100;
                        image.height = 100;
 
                        addChild(f_text);
                        f_text.x = -20;
                        f_text.y = -20;
                        f_text.text  = "proba";
 
                        addChild(Contein);
                        Contein.addChild(image);
                        Contein.addChild(f_text);
 
 
                        text_format.bold = true;
                        text_format.font = "Arial";
                        text_format.size = 18;
                        f_text.textColor  = 0xffffff;
 
                        f_text.setTextFormat(text_format);
 
                        this.x = 100;
                        this.y = 100;
 
                        Contein.addEventListener(MouseEvent.CLICK, move);
 
 
                }
 
                public function move(e:Event):void
                {
                        Contein.rotation += 2;
                }
 
 
 
        }
 
}


ObOs 25.01.2012 18:22

В вашем коде нет строчки
Код AS3:

f_text.embedFonts = true;


GBee 25.01.2012 18:23

Цитата:

vorodis2 - Не помогает!
так а где embedFonts в коде?

Nikolay00700 25.01.2012 19:04

Да пробовал же я... говорю... не помогло, вот и убрал... с ним текст вообще не отображается...
возможно, я что-то не так с ним делаю???

Код AS3:

package 
{
        import flash.text.TextField;
        import flash.display.Sprite;
        import flash.text.TextFormat;
        import flash.events.*;
 
        public class Proba  extends Sprite
        {
                public var image:some_image = new some_image();//картинка 40х40
                private var f_text:TextField = new TextField();
                private var text_format:TextFormat = new TextFormat();
                private var Contein:Sprite = new Sprite();
 
                public function Proba()
                {
                        addChild(image);
                        image.x = -50;
                        image.y = -50;
                        image.width = 100;
                        image.height = 100;
 
                        addChild(f_text);
                        f_text.x = -20;
                        f_text.y = -20;
                        f_text.embedFonts = true;
                        f_text.text  = "proba";
 
 
                        addChild(Contein);
                        Contein.addChild(image);
                        Contein.addChild(f_text);
 
 
                        text_format.bold = true;
                        text_format.font = "Arial";
                        text_format.size = 18;
                        f_text.textColor  = 0xffffff;
 
                        f_text.setTextFormat(text_format);
 
                        this.x = 100;
                        this.y = 100;
 
                        Contein.addEventListener(MouseEvent.CLICK, move);
 
 
                }
 
                public function move(e:Event):void
                {
                        Contein.rotation += 2;
                }
 
 
 
        }
 
}


Inet_PC 25.01.2012 19:13

Ну так шрифт заэмбедить нужно, а потом только включать это свойство.

Nikolay00700 25.01.2012 19:17

Но я же использую один из стандартных шрифтов - Arial...
или такое не проходит?

Как тогда это можно сделать?


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

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