Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.10.2009, 14:28
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 1  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
По умолчанию Программный blur в АС2. Возможно?

Если да, то как?

Старый 21.10.2009, 14:37
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Код AS1/AS2:
mc.filters = [new flash.filters.BlurFilter(10, 10, 3)];

Старый 21.10.2009, 19:49
Bitcoolman вне форума Посмотреть профиль Отправить личное сообщение для Bitcoolman Найти все сообщения от Bitcoolman
  № 3  
Ответить с цитированием
Bitcoolman

Регистрация: Sep 2009
Адрес: Челябинск
Сообщений: 43
А как плавное размытие?

Старый 21.10.2009, 20:26
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Плавно размываем мувик target_mc:
Код AS1/AS2:
import flash.filters.BlurFilter;
var blur:BlurFilter = new BlurFilter(0, 0, 3);
var filterArray:Array = new Array();
filterArray[0]= blur;
 
function setBlur (mc:MovieClip, maxBlur:Number, stepsQuant:Number) {
 
        var step:Number = maxBlur / stepsQuant;
 
        if (!mc.countBlur) {
		mc.countBlur = 0;
	}
 
	if (mc.countBlur < stepsQuant) {
		mc.countBlur++;
		blur.blurX = blur.blurY = step * mc.countBlur;
		mc.filters = filterArray;	
	}
	else {
		clearInterval(BL);
		mc.countBlur = 0;
	}
}
BL = setInterval(setBlur, 20, target_mc, 100, 10);//старт применения блюра в 10 шагов с 0 до 100 с промежутком между шагами в 20 mc


Последний раз редактировалось mooncar; 21.10.2009 в 23:25.
Старый 22.10.2009, 15:37
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 5  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
ООо) Спасибо! 2 mooncar: Только просьба еще одна, поясните пожалуйста что к чему... Если не трудно.


Последний раз редактировалось greep; 22.10.2009 в 15:43.
Старый 22.10.2009, 16:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Рассмотрим программный фильтр Blur:
Код:
public BlurFilter([blurX:Number], [blurY:Number], [quality:Number])
У него есть параметры
Код AS1/AS2:
blurX
blurY
Они отвечают за размер размытия по соответственным ординатам.
Функция, работающая через интервал, пошагово меняет их значение от нуля до заданного в maxBlur и с заданным в setInterval временным шагом.
После изменения blur.blurX и blur.blurY нужно тут же заново применить фильтр к объекту (автоматически изменения не подействуют), что и делается в строке
Код AS1/AS2:
mc.filters = filterArray;
На самом деле тут применяется весь набор возможных фильтров filterArray, а не только содержащийся в этом массиве фильр blur.

Что касается интервальной функции, то с ее помощью как раз периодически вызываем функцию изменения-переназначения фильтра.
В setInterval все, что идет после временного шага (собственно, интервала) - это аргументы, передаваемые вызываемой функци.

Код AS1/AS2:
function setBlur (mc:MovieClip, maxBlur:Number, stepsQuant:Number)
......
setInterval(setBlur, 20, target_mc, 100, 10)
target_mc - это аргумент mc - имя мувика на сцене.
100 - это аргумент maxBlur - максимальное (конечное) размытие
10 - это аргумент stepsQuant - количество шагов, от него зависит плавность, так же как и от временного интервала

mc.countBlur - это счетчик, считающий количество уже сделанных шагов. Для удобства он определяется внутри объекта-мувика.


Последний раз редактировалось mooncar; 22.10.2009 в 16:16.
Старый 22.10.2009, 16:44
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 7  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
Спасибо! Страна знает своих героев!

Старый 13.01.2010, 14:37
terve2 вне форума Посмотреть профиль Отправить личное сообщение для terve2 Найти все сообщения от terve2
  № 8  
Ответить с цитированием
terve2

Регистрация: Jan 2010
Сообщений: 5
Подскажите пожалуйста, а как в данном примере плавно уменьшить блюр с 100 до 0?

Старый 13.01.2010, 16:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код AS1/AS2:
blur.blurX = blur.blurY = maxBlur - step * mc.countBlur;
Счетчик можно также оставить считать от 0 до 10 по возрастающей.
А еще можно сделать счетчик уменьшающимся с 10 до 0 при убирании блюра. Тогда можно написать универсальную функцию, позволяющую менять блюр с любого места - то есть если блюр увеличивался, но вызвали уменьшение, а блюр недоувеличился до конца, то с текущего места он пойдет до нуля. Для определения "текущего места", соответственного значению текущего блюра как раз можно использовать текущее значение счетчика блюра..

Старый 14.01.2010, 13:05
terve2 вне форума Посмотреть профиль Отправить личное сообщение для terve2 Найти все сообщения от terve2
  № 10  
Ответить с цитированием
terve2

Регистрация: Jan 2010
Сообщений: 5
Спасибо, добрый человек. Дай Б-г вам здоровья

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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