Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Управление размытием (Blur) (http://www.flasher.ru/forum/showthread.php?t=140103)

serdeles 20.05.2010 14:07

Управление размытием (Blur)
 
Взял за основу этот код (отсюда: http://www.flasher.ru/forum/showpost...postcount=10):

Код AS1/AS2:

// Импортируем класс фильтра
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. Хочу каким-то образом вклинить в него строчку с интервалом (для того, чтобы размытие происходило плавно). Что-то наподобие этого:

Код AS1/AS2:

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

Вложений: 1
Почти понял про swapDepths

Код AS1/AS2:

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 не было битмапа. Сейчас из-за него эффект какой-то непонятной тени.


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

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