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

sweet_fighter 20.05.2011 02:04

Размытие всего, что находится под мувиклипом
 
Hello, world.
Появилось желание сделать такой эффект.
http://www.pixelfumes.com/blog/oct06/activeBlur.jpg
К примеру на стейдже до 30-ти мувиклипов. И есть один, полупрозрачный, который можно тягать по рабочей области, и все мувики, что попадают под него, размываются.

Реально ли это сделать через BitmapData + маска?

1. При активации нашего главного размывающего мувика, делаем "снимок всего экрана".
2. Размываем этот снимок и кладем поверх стейджа.
3. Наш главный мувик(который мы тягаем) - маска.

Подскажите плиз, в какую сторону копать/правильный алгоритм?
Не будет ли это жрать ресурсы сильно?

Спасибо.

Wolsh 20.05.2011 02:25

> 1. А есть уверенность, что под мувиком при этом не будет никакой анимации?))
> 2. Зачем "класть", зачем вообще экранный объект. Есть битмапдата экрана, берёте с неё нужный ректангл и отрисовываете на фон мувика.
> 3. Маска это здорово, только самого мувика тогда не будет)).
Вобщем можно разными путями сделать, и наверное маска даже менее затратна по ресурсам. Только, конечно, не мувик=маска, а отдельный шейп, повторяющий форму мувика и перемещающийся вместе с ним.

sweet_fighter 20.05.2011 02:42

Цитата:

Сообщение от Wolsh (Сообщение 997402)
> 1. А есть уверенность, что под мувиком при этом не будет никакой анимации?))
> 2. Зачем "класть", зачем вообще экранный объект. Есть битмапдата экрана, берёте с неё нужный ректангл и отрисовываете на фон мувика.
> 3. Маска это здорово, только самого мувика тогда не будет)).
Вобщем можно разными путями сделать, и наверное маска даже менее затратна по ресурсам. Только, конечно, не мувик=маска, а отдельный шейп, повторяющий форму мувика и перемещающийся вместе с ним.

1. Увереность 100% =) Я же экспериментирую..)
2. ..вот это интересно. спасибо.

Вот, есть что-то похожее. Но он не работает для мувиклипов, которые создаются программно. Только для библиотечных.
http://blog.onebyonedesign.com/actio...e-window-blur/

Wolsh 20.05.2011 02:47

Когда-то делал на AS2 еще. Ну или AS1)))
http://flasher.ru/forum/showthread.php?t=114105&page=2

goodguy 20.05.2011 07:53

А я делал и с анимацией ) Правда притормаживает при отрисовке, и процессор на ноуте грузился на 80%

В общем идея такая:
Код AS3:

var imageToDrawOn:Bitmap = new Bitmap(new BitmapData(200, 200)); // создаем картинку, в которую будем отрисовывать объект
imageToDrawOn.filters = [new BlurFilter(10, 10, 3)]; // размываем
stage.addChild(imageToDrawOn);
 
//потом по энтер фрейму отрисовываем в него сцену
private function onEnterFrame(e:Event):void {
    var matrix:Matrix = new Matrix();
    matrix.translate(-10, -10); // если картинка, в которую должна отрисоваться сцена сдвинута, например, на 10 пикселей, то вид сцены смещаем на 10 в противоположную сторону
    imageToDrawOn.visible = false; // чтобы картинка сама в себя не отрисовалась
    imageToDrawOn.bitmapData.dispose(); // убиваем битмап дату, чтобы каждый раз использовать чистую (здесь этого можно и не делать)
    imageToDrawOn.bitmapData = new BitmapData( 200, 200);
    imageToDrawOn.bitapData.draw(stage, matrix);
    imageToDrawOn.visible = true; // делаем снова видимой
}

На счет матрицы не уверен в правильности расчетов. Писал по памяти. Но без нее там точно никак.
Такой способ и анимацию отрисует без проблем

КорДум 20.05.2011 08:36

Цитата:

Когда-то делал на AS2 еще. Ну или AS1)))
А вот: http://silin.su/#AS2/glass


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

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