|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2009
Сообщений: 300
|
MovieClip скопировать в Bitmap и размыть
Нужно взять MovieClip, с точкой регистрации по центру, скопировать его в bitmap и размыть.
Все это получается, но как-то странно обрезается bitmap-копия. Мой код: 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); Последний раз редактировалось saikspaik; 22.12.2010 в 11:23. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Исходник посмотреть не могу, но подозреваю, что у вас точка регистрации клипа по центру графики, а не в верхнем левом углу. Соответственно, bmd.draw начинает делать снимок от координат 0,0 в центре, а потом правее и ниже, не захватывая отрицательные координаты. Вам надо либо с помощью Matrix сделать сдвиг для draw, либо... на фига вообще BitmapData тут нужна, когда фильтр можно наложить и на Sight?
PS. Программно создавать MovieClip бессмысленно. Используете Sprite вместо MovieClip. |
|
|||||
Попробовал сдвинуть область срисовки
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); а в минус нет. Создайте еще один экземпляр sight и наложите на него фильтр. Можно еще cacheAsBitmap выставить
__________________
Сам себе репортер |
|
|||||
да не Rectangle нужен, а Matrix
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
__________________
Сам себе репортер |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
/// смещение по оси 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); |
|
|||||
Регистрация: Nov 2009
Сообщений: 300
|
Цитата:
Цитата:
iNils Посмотрел код, теперь BitmapData-копия не съезжает, но blur размывает только середину рисунка, а края не хочет. Я сделал dx и dy больше (то есть меньше), после этого верхняя и левая граница размылись, а правая и нижняя остались неразмытыми. Вообще конечно лучше размывать не Bitmap, а спрайт, но пока не найду как. |
|
|||||
Регистрация: Feb 2010
Сообщений: 95
|
|
|
|||||
Регистрация: Nov 2009
Сообщений: 300
|
Благодаряю всех ответивших, ваши посты помогли мне.
|
Часовой пояс GMT +4, время: 11:11. |
|
« Предыдущая тема | Следующая тема » |
Теги |
bitmap , bitmapdata , blur |
|
|