Форум 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)

GBee 25.01.2012 19:25

Заэмбедить Ариал. И дальше, как разжевали выше.

elder_Nosferatu 25.01.2012 19:31

Когдато сам спрашивал. Кинули чтото типа этого примера. Мне помогло...
Код AS3:

package {
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.text.TextField;
        import flash.text.TextFormat;
 
        public class Main extends Sprite {
                [Embed(source = 'Square_rough.ttf', fontName = 'Square rough', mimeType = 'application/x-font' )]
                private static const FontClass:Class;
                public static var font:String = (new FontClass()).fontName;
 
                public function Main():void {
                        var format:TextFormat = new TextFormat(font, 50);
                        var field:TextField = new TextField();
                        field.autoSize = "left";
                        field.embedFonts = true;
                        field.setTextFormat(format);
                        field.text = "Example";
                        field.x = 300;
                        field.y = 300;
                        field.rotation = 30;
 
                        addChild(field);
                }
 
        }
 
}


Inet_PC 25.01.2012 19:32

Цитата:

Но я же использую один из стандартных шрифтов - Arial...
Ну не совсем стандартный, на винде может и да (кроме урезанных), а вот на линухах, мобильниках, маках. В общем очень не факт, что у пользователя есть этот шрифт.
Ну, наверное самый простой способ, это создать новый проект в Flash, добавить текстовое поле, выставить нужный шрифт, там же есть опции embed, выбрать нужные символы (для уменьшения размера) и скомпилить. И вот так добавить в проект:
Код AS3:

[Embed ("res/ds_goose.swf", fontFamily = "DS Goose")] 
                private static const TTF_DSGOOSE:Class;

Где DS Goose Имя шрифта, в Вашем случае Arial.

Nikolay00700 25.01.2012 19:59

Код AS3:

package 
{
        import flash.text.TextField;
        import flash.display.Sprite;
        import flash.text.TextFormat;
        import flash.events.*;
 
        public class Proba  extends Sprite
        {
 
                [Embed(source = '../../lib/arialbd.ttf', fontName = 'Arial bold', mimeType = 'application/x-font' )]
                private static const FontClass:Class;
                public static var font:String = (new FontClass()).fontName;
 
 
                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 = font;
                        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;
                }
 
 
 
        }
 
}

Ну не работает у меня....
Я не понимаю что снова не так...
По аналогии с предложенным elder_Nosferatu кодом доработал свой...
Результат - без изменений...

Inet_PC 25.01.2012 20:15

Ну так мой вариант попробуйте, должно заработать. Я бы скинул, но у меня Flash не установлен.

Nikolay00700 25.01.2012 22:11

Спасибо. У меня на этом компе тоже Flash не установлен.. Попробую - сообщу, если заработает...
Но это ведь компромисс... Один из вариантов выхода из ситуации...

Но всё-таки:
Так почему же мой код не работает??? Почему не получается сделать без Embed флеш-файла... (и не факт что это решение поможет...

Подскажите, пожалуйста, где в коде ошибка!!!

Inet_PC 25.01.2012 22:23

Цитата:

(и не факт что это решение поможет...
Поможет.
Ну как вариант rotationZ используйте вместо rotation.

Nikolay00700 25.01.2012 23:24

Спасибо!!!!!!!!!!
На самом деле в моем случае можно обойтись без всяких embed..

А вот rotationZ решило проблему!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Спасибо, Inet_PC!!!!!!!

dimarik 25.01.2012 23:37

Что-то типа этого

Inet_PC 25.01.2012 23:49

Цитата:

На самом деле в моем случае можно обойтись без всяких embed..
Ну так почему не воспользовались этим вариантом? И что это за вариант?
Ну а если нужно для FP9 и без эмбеда, то можно отрисовывать в битмап и уже его поворачивать. Скорее всего будет менее производительно.


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

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