AS3 BitmapData Copy Pixels Полпикселя? - PullRequest
0 голосов
/ 17 февраля 2012

При попытке прокрутить BitmapData на полпикселя вот мой оригинальный код

var speed:Number = 1;
_bitmapData.copyPixels(_backgroundParallax, _screenRect, _zeroPoint, null, null, true);
_backgroundParallax.copyPixels(_backgroundParallax, new Rectangle(0, 0, speed,    _backgroundParallax.height), new Point(_backgroundParallax.width-speed,0), null, null, false);
_backgroundParallax.scroll( (speed*-1) , 0);

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

var speed:Number = 1;
_bitmapData.copyPixels(_backgroundParallax, _screenRect, _zeroPoint, null, null, true);
_backgroundParallax.copyPixels(_backgroundParallax, new Rectangle(0, 0, speed,    _backgroundParallax.height), new Point(_backgroundParallax.width-speed,0), null, null, false);
_backgroundParallax.copyPixels(_backgroundParallax, new Rectangle(0, 0, _backgroundParallax.width, _backgroundParallax.height), new Point((speed*-1),0), null, null, false);

, который снова отлично работает, когда скорость равна 1, но снова не перемещается вообще, когда он установлен на .5

Есть идеи?

1 Ответ

1 голос
/ 18 февраля 2012

Вы не сможете получить плавную полупиксельную прокрутку с подходом, который вы используете.Но я разработал две альтернативы с использованием матрицы преобразования, которые работают действительно очень хорошо.

Вот два разных подхода к прокрутке:

Этот подход прокручивает одиночное изображение до его пределов.http://plasticsturgeon.com/2010/11/super-fast-scrolling-of-huge-bitmaps/

Этот подход прокручивает мозаичное изображение бесконечно.http://plasticsturgeon.com/2010/06/infinite-scrolling-bitmap-backgrounds-in-as3/

Рабочие демонстрации, пояснения и полный загружаемый исходный код, предоставленный по ссылкам

...