![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Если прямоугольник для заблуривания не равен размеру самой картинки, то у меня какая-то чертовщина получается.
Объясните, как это работает? |
|
|||||
|
Регистрация: 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); |
|
|||||
|
Регистрация: 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. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
orcpochta, Вас устроят резкие границы между блюр-рамкой и неблюр-картинкой?
Если да то копируем нужный Rectangle в BitmapData, потом блюрим всю картинку и помещаем сверху незаблюренный отпечаток. Если же надо чтоб края постепенно заблюрились, используем градиентную маску и scale9grid.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Цитата:
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(); - а он тут вообще нужен???
};
Последний раз редактировалось orcpochta; 26.09.2008 в 14:54. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
На onMouseMove конечно нужен. Смысл апдейта в том, что движение мыши, вызывающее упомянутое событие, не совпадает по частоте с обновлением экрана. Если бы использовалось событие onEnterFrame - тогда конечно глупость))
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|