PDA

Просмотр полной версии : Управление размытием (Blur)


serdeles
20.05.2010, 14:07
Взял за основу этот код (отсюда: http://www.flasher.ru/forum/showpost.php?p=768454&postcount=10):


// Импортируем класс фильтра
import flash.filters.BlurFilter;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
////
var blur:BlurFilter = new BlurFilter(10, 10, 3);
////
blur_button.onPress = function(){
var bmp:BitmapData = new BitmapData(Stage.width, Stage.height, false, 0xFFFFFF);
this._visible = false;
var rect:Rectangle = new Rectangle(0,0,Stage.width, Stage.height);
var point:Point = new Point(0,0);
bmp.draw(_root);
_root.attachBitmap(bmp, _root.getNextHighestDepth(), "auto", true);
bmp.applyFilter(bmp,rect,point,blur);
this.swapDepths(_root.getNextHighestDepth());
this._visible = true;
var mes:MovieClip = _root.attachMovie("message","msg_mc",_root.getNextHighestDepth(),{_x:125, _y:140});
mes.close_btn.onPress = function(){
bmp.dispose();
_root.blur_button.enabled = true;
this._parent.removeMovieClip();
}
this.enabled = false;
}


Возникло два вопроса.

1. Хочу каким-то образом вклинить в него строчку с интервалом (для того, чтобы размытие происходило плавно). Что-то наподобие этого:


setInterval(setBlur, 20, target_mc, 100, 10);//старт применения блюра в 10 шагов с 0 до 100 с промежутком между шагами в 20 mc


Но не знаю, как это сделать, и вообще, реально ли это применить к данному коду.

2. Один из мувиков должен находиться как бы на верхнем слое. То есть: всё, что ниже, заблёрено. Я так понимаю, в код с размытием надо прописать исключение — имя мувика, который не будет заблёрен. Подскажите, как это сделать.

in4core
20.05.2010, 14:58
swapDepth поможет вытащить мувики наружу.
А интервал сделать просто. Если хочешь плавно либо используй интерфрейм бекон либо твин класс. Для параметров фильтра. В хелпе есть готовый пример для плавной работы с филтрами через твин класс

serdeles
20.05.2010, 15:00
А можно о swapDepth поподробнее?
Ага, в хелпе щас поковыряюсь, спасибо.

serdeles
20.05.2010, 17:26
Почти понял про swapDepths


import flash.filters.BlurFilter;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
////
var blur:BlurFilter = new BlurFilter(10, 10, 3);
////
blur_button.onPress = function(){
var bmp:BitmapData = new BitmapData(Stage.width, Stage.height, false, 0xFFFFFF);
this._visible = false;
var rect:Rectangle = new Rectangle(0,0,Stage.width, Stage.height);
var point:Point = new Point(0,0);
bmp.draw(_root);
_root.attachBitmap(bmp, _root.getNextHighestDepth(), "auto", true);
bmp.applyFilter(bmp,rect,point,blur);
this.swapDepths(_root.getNextHighestDepth());
this._visible = true;

close_btn.onPress = function(){
bmp.dispose();
_root.blur_button.enabled = true;
this._parent.removeMovieClip();
}

close_btn.swapDepths(_root.getNextHighestDepth());
oval.swapDepths(_root.getNextHighestDepth());
this.enabled = true;
}


Но, видимо, не всё.
Не могу добиться, чтобы по нажатию на blur_button под мувиками oval и close_btn не было битмапа. Сейчас из-за него эффект какой-то непонятной тени.