PDA

Просмотр полной версии : Bitmap движется рывками


dm2009
26.01.2012, 21:35
Привет, появился вопрос.
Есть векторная графика, если её переконвертить с помощью BitmapData.draw в битмап и этот битмап двигать по сцене, то движение будет дерганным.
Если же ту же векторную графику положить на сцену и задать в настройках Export as Bitmap и двигать наравне с первым, то движение будет плавным.

Как добиться плавного движения в первом случае?

Вот пример - http://megaswf.com/serve/2043528

import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Bitmap;

var btmData:BitmapData = new BitmapData(mc.width,mc.height,true,0x000000);
btmData.draw(mc,null,null,null,null,true);
var bitm:Bitmap = new Bitmap(btmData,"always",true);
addChild(bitm);
bitm.x = mc.x;
bitm.y = 300;


addEventListener(Event.ENTER_FRAME,func);

function func(ev:Event)
{
mc.x-=0.2;
bitm.x -=0.2;
}

silin
26.01.2012, 21:45
попробуй
bitm = new Bitmap(btmData, PixelSnapping.NEVER, true);

dm2009
26.01.2012, 22:08
never/always не прокатывает. Можно написать scaleX=0.999 тогда смусинг врубается, но мне это не подходит т.к. всё равно изображения колбасится начинает по краям.

expl
26.01.2012, 23:06
Может если еще сделать
bitmp.smoothing = true
лучше будет?

silin
26.01.2012, 23:10
>>never/always не прокатывает.
в каком смысле 'never/always не прокатывает', нельзя почему-то ?
глянул http://silin.su/trash/move/, разница налицо: верхний -вектор, средний - битмап c PixelSnapping.NEVER, нижний ALWAYS
ну какбы и понятно, что для ALWAYS должна по целым пикселям прыгать

Добавлено через 1 минуту
>>Может если еще сделать
а он и так smoothing = true, в конструкторе задано

dm2009
26.01.2012, 23:43
>>never/always не прокатывает.
в каком смысле 'never/always не прокатывает', нельзя почему-то ?


Вот и спрашиваю здесь потому, что на практике почему-то нельзя. :)

Вы попробуйте в своём примере не квадратики, а кисточкой пару линий нарисовать во флэше и это клипом-классом сделать. А потом добавить в спрайт, сразу видно дрожание.


mc.graphics.beginFill(33023);
mc.graphics.drawRect(0, 0, 30, 30);*/
mc.addChild(new bg()); --- добавить векторный клип

Это вообще для игры, для движения фона, наверное попробую copyPixels какой-нибудь применить, ручной рендер что ли.

silin
27.01.2012, 09:52
ага, есть дрожание в обоих режимах, причем в разных плеерах оно как-то по-разному проявляется
как вариант еще можно посмотреть заливку шейпа битмапом, http://silin.su/trash/move1/

dm2009
27.01.2012, 14:41
Действительно, при использовании шейпа результат хорош. Спасибо.