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

botbot 06.09.2013 22:03

Смазанная картинка
 
Во флешке есть игровой интерфейс. Назовём его pi. ЧТобы его раскрывать на фулскрин внутри есть 3 отдельных символа: ul, dl, dr. В каждом таком символе всякие иконочки/кнопочки/циферки. весь pi (со всеми вложенными элементами) рисуется в flash cs и я его подрлючаю к проекту. Так вот, мне надо повесить в него иконку. Если сделать
Код AS3:

pi.addChild(ico)

- картинка получается чёткая. А если я делаю
Код AS3:

pi.dr.addChild(ico)

- картинка иконки получается размазанная, как будто к ней блюр применяли. Сначала я думал что где-то в pi блюр фильтр стоит. Но там нет никаких фильтров, проверял в отладчике. Eсть только фильтры DropShadow на текстах, но они далеко он этой иконки. Кто подскажет, где искать косяк?

KumoKairo 06.09.2013 22:18

Надо напрямую задавать интовые значения координатам, там если чуть смещается по сетке - размазывается. Обычно помогает приведение присваиваемых координат к int, особенно если положение объекта считается по формулам, что - нибудь типа такого:
Код AS3:

myObj.x = myAnotherObj.x + myObj.width / 2; //Если получится дробное значение - скорее всего заблюрится
myObj.x = int(myAnotherObj.x + myObj.width / 2); //А вот так уже нет

Есть еще свойство .snapToPixels, но оно только для Bitmap вроде доступно..

botbot 07.09.2013 14:26

Нет, проверил. Просто написал
Код AS3:

pi.dr.x = Math.round(pi.dr.x);
pi.dr.y = Math.round(pi.dr.y);

Всё равно смазанная картинка.
Чтобы понять, как это выглядит:
http://img.pixs.ru/storage/4/1/4/che...64_8971414.jpg
Слева это когда родитель pi.dr - всё смазано. А справа - когда родитель pi.

Zebestov 07.09.2013 15:02

Изображения следует прикреплять к сообщению.

botbot 07.09.2013 15:20

Нашёл причину. Оказывается в редакторе (CS 5.5) при размещении элемента dr стояли зачем-то трёхмерные координаты, вот его и блюрило.
Причём я так и не нашёл как его вернуть в плоские координаты, приходится заново в редакторе всё пересобирать.

Frost47rus 08.09.2013 12:11

Код AS3:

pi.dr

Очень смешно))))

Добавлено через 40 секунд
Цитата:

Сообщение от botbot (Сообщение 1145723)
когда родитель pi.dr - всё смазано

вы просто жжоте))))

Bletraut 08.09.2013 14:53

Цитата:

Нашёл причину. Оказывается в редакторе (CS 5.5) при размещении элемента dr стояли зачем-то трёхмерные координаты, вот его и блюрило.
Причём я так и не нашёл как его вернуть в плоские координаты, приходится заново в редакторе всё пересобирать.
Так там же можно выставить Z = 0 и он снова станет двухмерным.

botbot 08.09.2013 15:05

Увы, не работает. Там уже стоит z=0 и углы поворота тоже стоят в 0. Всё равно флеш уже считает картинку трёхмерной и обратно не переводит.

samana 09.09.2013 13:40

Как только вы начинаете использовать "трёхмерное" преобразование, то объекту назначается Matrix3D и картинка действительно портиться в качестве. Чтобы избавиться от размытия, когда 3d выставлено по нулям, необходимо обнулить матрицу
Код AS3:

obj.transform.matrix3D=null

Но после этого все трансформации у объекта примут начальные значения, по этому перед обнулением 3d матрицы запомните положение, поворот и масштаб вашего объекта, чтобы выставить их заново.


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

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