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

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

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

Регистрация: Nov 2009
Сообщений: 300
По умолчанию MovieClip скопировать в Bitmap и размыть

Нужно взять MovieClip, с точкой регистрации по центру, скопировать его в bitmap и размыть.
Все это получается, но как-то странно обрезается bitmap-копия.

Мой код:
Код AS3:
 
var cursor:MovieClip = new MovieClip();
var sight:Sight = new Sight();//Это MovieClip из библиотеки
 
this.addChild(cursor);
cursor.addChild(sight);
 
Mouse.hide();
 
this.addEventListener(Event.ENTER_FRAME, onFrame);
 
function onFrame(e:Event):void {
	cursor.x = mouseX;
	cursor.y = mouseY;
}
 
var bmd:BitmapData;
var bm:Bitmap;
var blur:BlurFilter;
 
bmd = new BitmapData(this.width,this.height,true,0x000000);
bmd.draw(this);
bm = new Bitmap(bmd);
cursor.addChild(bm);
 
blur = new BlurFilter(4, 4, 6);
bmd.applyFilter(bmd, bmd.rect, new Point(0,0), blur);
Изображения
 
Вложения
Тип файла: zip Problem.zip (8.7 Кб, 56 просмотров)


Последний раз редактировалось saikspaik; 22.12.2010 в 11:23.
Старый 22.12.2010, 11:48
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Исходник посмотреть не могу, но подозреваю, что у вас точка регистрации клипа по центру графики, а не в верхнем левом углу. Соответственно, bmd.draw начинает делать снимок от координат 0,0 в центре, а потом правее и ниже, не захватывая отрицательные координаты. Вам надо либо с помощью Matrix сделать сдвиг для draw, либо... на фига вообще BitmapData тут нужна, когда фильтр можно наложить и на Sight?

PS. Программно создавать MovieClip бессмысленно. Используете Sprite вместо MovieClip.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 22.12.2010, 12:04
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 3  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Попробовал сдвинуть область срисовки
Код AS3:
bmd = new BitmapData(this.sight.width,this.sight.height,true,0x000000);
var rect:Rectangle = this.sight.getBounds(cursor);
trace(rect);
bmd.draw(this.sight, null, null, null, rect);
Странно... В плюс сдвигается (если у rect координаты сдвигать в положительную сторону),
а в минус нет.

Создайте еще один экземпляр sight и наложите на него фильтр.
Можно еще cacheAsBitmap выставить

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
да не Rectangle нужен, а Matrix
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Цитата:
Сообщение от cleptoman Посмотреть сообщение
да не Rectangle нужен, а Matrix
А почему в плюс сдвигается?

Старый 22.12.2010, 13:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Код AS3:
/// смещение по оси x и y
var dx:int = -20;
var dy:int = -20;
 
/// исходный спрайт
var s:Sprite = new Sprite ();
s.x = s.y = 50;
s.graphics.beginFill (0xFF0000);
s.graphics.drawRect ( -20, -20, 40, 40);
s.graphics.drawRect ( -10, -10, 20, 20);
s.alpha = .5
addChild (s)
 
/// делаем снимок 
var bmpCrop:BitmapData = new BitmapData (40, 40);
bmpCrop.draw (s, new Matrix (1, 0, 0, 1, -dx, -dy));
/// показываем его
var bitmapCrop:Bitmap = new Bitmap (bmpCrop)
bitmapCrop.x = 100;
addChild (bitmapCrop);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.12.2010, 00:33
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 7  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Цитата:
фильтр можно наложить и на Sight
Цитата:
Создайте еще один экземпляр sight и наложите на него фильтр.
Как? Ведь Sight - это MovieClip, или возможно Sprite, а applyFilter применяется только к BitmapData.

iNils
Посмотрел код, теперь BitmapData-копия не съезжает, но blur размывает только середину рисунка, а края не хочет. Я сделал dx и dy больше (то есть меньше), после этого верхняя и левая граница размылись, а правая и нижняя остались неразмытыми.

Вообще конечно лучше размывать не Bitmap, а спрайт, но пока не найду как.

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

Регистрация: Feb 2010
Сообщений: 95
Код AS3:
var a:MovieClip = new MovieClip();
a.filters = [new BlurFilter(...)];

Старый 25.12.2010, 06:23
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 9  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Благодаряю всех ответивших, ваши посты помогли мне.

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

Теги
bitmap , bitmapdata , blur
Опции темы
Опции просмотра

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

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


 


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


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