Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Bitmap движется рывками (http://www.flasher.ru/forum/showthread.php?t=174497)

dm2009 26.01.2012 21:35

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

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

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

Код AS3:

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

попробуй
Код AS3:

bitm = new Bitmap(btmData, PixelSnapping.NEVER, true);


dm2009 26.01.2012 22:08

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

expl 26.01.2012 23:06

Может если еще сделать
Код AS3:

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

Цитата:

Сообщение от silin (Сообщение 1059367)
>>never/always не прокатывает.
в каком смысле 'never/always не прокатывает', нельзя почему-то ?

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

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

Код AS3:

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

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


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

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