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

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

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

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Не могу сообразить как заблурить часть картинки

Если прямоугольник для заблуривания не равен размеру самой картинки, то у меня какая-то чертовщина получается.
Объясните, как это работает?

Старый 26.09.2008, 07:23
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 2  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
в чем проблема то ?
копируем нужный участок и его блюрим
__________________
на каком языке вы пишите?
а на каком нужно?

Старый 26.09.2008, 11:34
flash33 вне форума Посмотреть профиль Отправить личное сообщение для flash33 Найти все сообщения от flash33
  № 3  
Ответить с цитированием
flash33
 
Аватар для flash33

Регистрация: Nov 2005
Сообщений: 1,155
Код:
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);
Пример из help'а

Старый 26.09.2008, 12:59
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 4  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
flash33, спасибо! торможу, да..))
Хотя в 8-м хелпе я такого примера не нашел.

upd:
А как лучше заблурить "рамку" у картинки?
Заблурить четыре прямоугольника по краям картинки или как-то еще можно? Например, что-нибудь вроде заблурить всю картинку, а потом центральный прямоугольник очистить от блура, если нечто подобное возможно, конечно.

upd2:
Почему следующая функция не дает желаемого результата? т.е. никаких видимых изменений с картинкой не происходит, хотя мною ожидалось, что мутное стекло будет ездить по картинке.
Код:
mcPict.onMouseMove = function():Void {
	var nW:Number = 60; //задаем ширину и высоту мутного стекла
	var nH:Number = 60; 
	var nX:Number = this._xmouse - nW/2; //ставим стекло центром на мышь
	var nY:Number = this._ymouse - nH/2;	
	bmdPict = bmdPictClone.clone(); //клонируем битмап с заранее заготовленного клона для "очистки" картинки от предыдущих действий фильтров
	bmdPict.applyFilter(bmdPict, new Rectangle(nX, nY, nW, nH), new Point(nX, nY), filter); //накладываем мутное стекло
	updateAfterEvent();	
};


Последний раз редактировалось orcpochta; 26.09.2008 в 14:31.
Старый 26.09.2008, 14:33
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
orcpochta, Вас устроят резкие границы между блюр-рамкой и неблюр-картинкой?
Если да то копируем нужный Rectangle в BitmapData, потом блюрим всю картинку и помещаем сверху незаблюренный отпечаток.
Если же надо чтоб края постепенно заблюрились, используем градиентную маску и scale9grid.
__________________
Reality.getBounds(this);

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

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от Wolsh Посмотреть сообщение
orcpochta, Вас устроят резкие границы между блюр-рамкой и неблюр-картинкой?
Если да то копируем нужный Rectangle в BitmapData, потом блюрим всю картинку и помещаем сверху незаблюренный отпечаток.
Если же надо чтоб края постепенно заблюрились, используем градиентную маску и scale9grid.
ага, я так и предполагал, что надо копию сделать, а потом ее наложить - мне только не понятно, какой процесс более ресурсоемкий:
4 прямоугольника с блуром или накладка копии поверх одного блура

Посмотрите, пожалуйста, про функцию выше в upd2

Спасибо!

upd:
не знаю на сколько это рационально, но изменив код следующим образом получил требуемый эффект:
Код:
mcPict.onMouseMove = function():Void {
	var nW:Number = 60;
	var nH:Number = 60;
	var nX:Number = this._xmouse - nW/2;
	var nY:Number = this._ymouse - nH/2;	
	bmdPict.dispose();
	bmdPict = bmdPictClone.clone();
	this.attachBitmap(bmdPict, this.getNextHighestDepth());
	bmdPict.applyFilter(bmdPict, new Rectangle(nX, nY, nW, nH), new Point(nX, nY), filter);
	//updateAfterEvent(); - а он тут вообще нужен???
};
почему-то кажется, что updateAfterEvent(); тут совсем ни на что не влияет.


Последний раз редактировалось orcpochta; 26.09.2008 в 14:54.
Старый 26.09.2008, 18:37
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
На onMouseMove конечно нужен. Смысл апдейта в том, что движение мыши, вызывающее упомянутое событие, не совпадает по частоте с обновлением экрана. Если бы использовалось событие onEnterFrame - тогда конечно глупость))
__________________
Reality.getBounds(this);

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

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

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


 


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


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