Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Округление позиции DisplayObject (http://www.flasher.ru/forum/showthread.php?t=144445)

vsesh 12.09.2010 18:51

Округление позиции DisplayObject
 
Вот заметил странное поведение
Код AS3:

var needle_x:Number = 392.2007964342693;
 
var sp:Sprite = new Sprite();
sp.x = needle_x;
 
trace("x: " + needle_x.toString());
trace("result x: " + sp.x.toString());

Код:

x: 392.2007964342693
result x: 392.2

Можно ли это как-нибудь обойти?
Нужно, из-за того, что возникает заметное подергивание при движении объекта.

i.o. 12.09.2010 18:53

как бэ реальный пиксель это целое число, что вы собственно от дроби то хотите?

vsesh 12.09.2010 19:06

Да забыл добавить, что движение основанное на getTimer(). fps = 30, реальная fps такая же - только иногда на доли секунды падает до 29. Заметил, что подергивание возникает только с растровыми объектами. Видимо, дело в чем то другом.

i.o. 12.09.2010 19:16

дело может быть в Bitmap#pixelSnapping, Bitmap#smoothing, Bitmap#scaleX/scaleY

gloomyBrain 12.09.2010 19:17

Цитата:

как бэ реальный пиксель это целое число, что вы собственно от дроби то хотите?
Неа. Во флеше 1 пиксель представлен 20-ю twip'ами. Twip - это такая единица графического вывода для FP. То есть при выводе на экран все округляется до 1/20 пикселя. Что мы и видим - задаем точное значение, получаем неточное.
Однако, хочу заметить, что так быть не должно - это скорее недоработка Adobe, ибо одно дело позиция на экране (да, ее можно округлить в целях упрощения вывода), а другое дело - реальная позиция в системе координат контейнера.
Что касается растровых изображений - Bitmap.smoothing и Bitmap.pxelSnapping в помощь. Все решаемо

alatar 12.09.2010 19:55

Цитата:

это скорее недоработка Adobe
Это сделано для отображения векторной графики

vsesh 12.09.2010 19:56

в чем дело я не нашел, но все быстро движущиеся элементы через illustrator "пропустил" (эти элемент достаточно абстрактны), а уже после во flash вставлял - в общем не как bitmap, а как drawing object - для моей конкретной задачи, все же решение.

Bitmap.smoothing - не особо помог - сама картинка стала меньше дергаться, а движение такое же как и было

Zebestov 12.09.2010 19:58

Не думаю, что это недоработка. Просто Adobe как бы говорит: не устраивайте из DisplayObject хранилище сверхточных чисел, отделяйте данные об объекте от его отображения.

gloomyBrain 12.09.2010 20:09

Цитата:

Просто Adobe как бы говорит: не устраивайте из DisplayObject хранилище сверхточных чисел, отделяйте данные об объекте от его отображения.
еще раз
Цитата:

отделяйте данные об объекте от его отображения.
Вы только что сами сказали, что это недоработка.

@alatar
Цитата:

Это сделано для отображения векторной графики
Какое отношение сеттер имеет к выводу на экран? В моем понимании он должен округлять данные вида, да, но никак не данные модели

Zebestov 12.09.2010 20:24

Цитата:

Сообщение от gloomyBrain (Сообщение 935298)
Вы только что сами сказали, что это недоработка.

хде? и что это снова за "Вы"? =)


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

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