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

alexandrratush 08.06.2015 18:14

Проблема с текстовым шрифтом после копирования колеса
 
Вложений: 2
Здравствуйте! Суть проблемы, есть колесо фортуны-спрайт, на нем текстовые поля-значения. После того как добавлен нужный текст, копирую колесо и потом уже кручу один объект (а не несколько). Но возникла проблема со шрифтом, см. файлы. Как этого избежать? Возможно ли скопировать чтобы текстовые поля не выглядели так ужасно? Вот код, который приводит ко второму результату:
Код AS3:

var bmd:BitmapData = new BitmapData(_circleAsset.width, _circleAsset.height, true, 0xFFF);
var m:Matrix = new Matrix();
m.translate(_circleAsset.width * .5, _circleAsset.height * .5);
bmd.drawWithQuality(_circleAsset, m, null, null, null, null, StageQuality.BEST);
m.translate(-bmd.width, -bmd.height);
 
while (_circle.numChildren > 0) _circle.removeChildAt(0);
_circle.graphics.beginBitmapFill(bmd, m, false, true);
_circle.graphics.drawRect(-bmd.width * .5, -bmd.height * .5, bmd.width, bmd.height);
_circle.graphics.endFill();

где, _circleAsset - входной, а _circle - результат.
Буду рад любым идеям. Спасибо!
Вложение 31629 Вложение 31630

AlexCooper 08.06.2015 18:25

слева до кеширования, на сцене или в асетах, справа - после?

Явно проблема при снятии. Возможно ты меняешь размеры? Тогда попробуй обернуть в контейнер и снять с контейнера.

Добавлено через 53 секунды
или у тебя альфа канал, и просто две карусели одна на одну налаживается)

Добавлено через 3 минуты
на всяк, если ты потерял
Код AS3:

public static function get( ARG_object:DisplayObject, ARG_x:Number = 0, ARG_y:Number = 0, ARG_width:Number = 0, ARG_height:Number = 0,transpend:Boolean=true):BitmapData {
 
                        if (!ARG_width) ARG_width = (ARG_object.mask) ? ARG_object.mask.width : ARG_object.width;
                        if (!ARG_height) ARG_height = (ARG_object.mask) ? ARG_object.mask.height : ARG_object.height;
 
                        var cropArea:Rectangle = new Rectangle(0, 0, ARG_width, ARG_height);
                        var fillColor:uint = transpend
                                        ? 0x00000000
                                        : 0x0;
                        var bmpd:BitmapData = new BitmapData(ARG_width, ARG_height,true,fillColor);
 
                        var croppedBitmap:Bitmap = new Bitmap(bmpd, PixelSnapping.ALWAYS, true);
 
                        var cropMatrix:Matrix = new Matrix();
                        cropMatrix.translate(-ARG_x, -ARG_y);
 
                        bmpd.draw( ARG_object, cropMatrix, null, null, cropArea, true );
 
                        return bmpd;
                }

возможно что ты пытаешься залить шейп, загрузи в Битмапу,
Код AS3:

new Bitmap( bmd )

или
Код AS3:

bitmap.bitmapData = bmd;


alexandrratush 08.06.2015 18:30

да, слева на сцене, справа - после.
Меняю только размер круга-основы. Текстовые поля потом уже добавляются. Разве это как-то влияет?
нет, карусель одна, та что справа.

AlexCooper 08.06.2015 18:42

сделай все транформации над оригиналом, помести в контейнер и снего снимай

Добавлено через 3 минуты
а вообще, пора Starling подключать к своим проектам)

alexandrratush 12.06.2015 23:31

AlexCooper, спасибо за советы! Проблема решилась сама собой, почистил код, сменил подход к решению задачи. +, узнал что не нужно два раза применять матрицу (при снятии битмапДаты и при рисовании, что видно в первом посте).


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

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