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

lolsuicide 14.07.2011 18:12

Дергает картинку и фильтры на сцену
 
Собственно два вопроса.
1. Во флешке двигаются картинки, при очень медленном перемещении все более-мение смотрибельно, но если увеличить скорость, то картинка дергается(горизонтальные полосы). Как реализовать во флеше двойную буферизацию или другой способ избавиться от побочного эффекта рендеринга?
2. Нашел в инете любопытную статью, думал попробовать поэкспериментировать, однако в AS3 код отказался работать, подскажите в чем загвоздка?
собственно сам код (по идее должен добавить эффект размытия сцены, но не тут то было):
Код AS3:

var backBuffer:BitmapData;
var b:Bitmap = new Bitmap(backBuffer,PixelSnapping.ALWAYS);
var blur_filter:BlurFilter = new BlurFilter(10,10,2);
 
backBuffer = new BitmapData(stage.stageWidth, stage.stageHeight, false);
addChild(b);
b.blendMode="normal";
addEventListener(Event.ENTER_FRAME, update);
 
function update(e : Event):void
{
        b.visible=false;
        backBuffer.lock();
        backBuffer.draw(this,null,null,null,new Rectangle(0,0,stage.stageWidth, stage.stageHeight));
        backBuffer.applyFilter(backBuffer, new Rectangle(0,0,stage.stageWidth, stage.stageHeight), new Point(0, 0), blur_filter);
        backBuffer.unlock();
        b.visible=true;
}

заранее спасибо :)

nOobCrafter 15.07.2011 13:06

Вложений: 1
Код AS3:

var backBuffer:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false);
var b:Bitmap = new Bitmap(backBuffer,PixelSnapping.ALWAYS);
        b.blendMode = BlendMode.OVERLAY;
var blur_filter:BlurFilter = new BlurFilter(10,10,1);
        backBuffer.draw(this,null,null,null,new Rectangle(0,0,stage.stageWidth, stage.stageHeight));
        backBuffer.applyFilter(backBuffer, new Rectangle(0,0,stage.stageWidth, stage.stageHeight), new Point(0, 0), blur_filter);
 
addChild(b);
addEventListener(Event.ENTER_FRAME, update);
 
function update(e : Event):void
{
        b.visible=false;
        backBuffer.lock();
        backBuffer.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight), 0xFFFFFF); // <- пропущено в оригинале.
        backBuffer.draw(this,null,null,null,new Rectangle(0,0,stage.stageWidth, stage.stageHeight));
        backBuffer.applyFilter(backBuffer, new Rectangle(0,0,stage.stageWidth, stage.stageHeight), new Point(0, 0), blur_filter);
        backBuffer.unlock();
        b.visible=true;
}

вообщем кидаешь на сцену какую то картинку \ анимацию, и дальше смотришь результат, если расширить окошко ФП то наглядно видна разница

lolsuicide 15.07.2011 18:59

Пытал флеш на предмет 1го вопроса, в итоге лучшей картинки дабился при использование аппаратного ускорение GPU и установкой 60fps, но этот способ нещадно жрет процессор (~40% 2core). Еще наткнулся на метод "bitmap + copyPixels", только не нашел более конкретной информации, в чем его смысл и как применять, мб кто знает о чем это? =)

Цитата:

Сообщение от nOobCrafter (Сообщение 1011874)
вообщем кидаешь на сцену какую то картинку \ анимацию, и дальше смотришь результат, если расширить окошко ФП то наглядно видна разница

супер, спасибо
Еще пара вопросов по этой теме. С блюром беда, вроде стоит, но эффекта не дает и где добавить альфу, а то при других фильтрах экран цвета "заливки" (поменять цвет может не тот эффект дать)?

nOobCrafter 15.07.2011 19:27

Цитата:

С блюром беда, вроде стоит, но эффекта не дает
поиграйся с режимами наложения
Цитата:

где добавить альфу
у самой битмапы поменяй


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

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