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

Ilut 26.11.2009 04:42

Скролинг картинки
 
Доброе время суток. Возникла следующая ситуация. В программе используется скролинг картинки. При скролинге используется маска и изменяются координаты картинки. Картинка подгружаются в мувик. По нажатию на кнопку другой мувик начинает движение по картинке, его координаты изменятся на очень маленькую величину(0.2/0.1/0.05). Это делается для того чтобы движение было плавным. Причем, при движении, мувик движущегося объекта должен быть в центре области, и поэтому изменяются координаты картинки. Все равботает но есть один очень нежелательный минус. Почему то координаты картинки изменяются слишком дискретно, как бы на целый пиксель, а не его десятую часть. Как можно это исправить, ну или какие можно использовать альтернативные способы скролинга?

dsQuadro 26.11.2009 13:45

координаты обьектов имеют какоето сильное округление... точно не помню какое... если надо постепенное смещение без погрешностей, то лучше координаты хранить в отдельных переменных и с ними проводить расчеты а потом их применять к обьекту...
Код AS3:

var dx:Number = 0.21456;
var _x:Number = 500;
_x += dx;
object.x = _x;

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

fljot 26.11.2009 13:58

картинке нужно добавить сглаживание

SamFR 26.11.2009 19:32

Попробуйте это:
Код AS3:

yourBitmap.pixelSnapping = PixelSnapping.NEVER;

Добавлено через 1 минуту
Цитата:

Сообщение от fljot (Сообщение 868403)
картинке нужно добавить сглаживание

Сглаживание тут не при чём, оно используется при масштабировании, а не при перемещении.

Добавлено через 8 минут
Цитата:

Сообщение от dsQuadro (Сообщение 868402)
координаты обьектов имеют какоето сильное округление... точно не помню какое...

Насколько я помню, дробная часть до десятитысячных включительно отбрасывается, а тысячные округляются до сотых. Но этого обычно достаточно для плавного движения, всё равно меньшее изменение мы заметить не в состоянии (вернее, наш монитор не в состоянии его отрисовать =). Только у наследников UIComponent кодинаты, если мне не изменяет память, округляются до целого. Так что дело, скорее всего, в Bitmap.pixelSnapping, значение по умолчанию которого заставляет картинку (если она не масштабирована, не повёрнута и не скошена) отрисовываться с округлением до ближайшего пиксела, несмотря на то, что координаты хранятся как дробные.

Zebestov 26.11.2009 20:09

может здесь найдется решение

SamFR 26.11.2009 20:18

Вот, и я к тому же пришёл. Ставим
Код AS3:

bmp.scaleX = bmp.scaleY = 0.99;
bmp.smoothing = true;
bmp.pixelSnapping = PixelSnapping.NEVER; //я бы всё-таки не оставлял значение "auto"

и картинка перемещается плавно.


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

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