PDA

Просмотр полной версии : проблема с удалением фильтра, хелп!


stweet
15.06.2011, 16:07
var bitData:BitmapData = new BitmapData(loader.content.width,
loader.content.height,
false,
0);
bitData.draw(loader.content);
bitData.applyFilter(bitData,
new Rectangle(0, 0, 50, 50),
new Point(),
new ColorMatrixFilter([
0.3, 0.6, 0.1, 0.0, 0.0,
0.3, 0.6, 0.1, 0.0, 0.0,
0.3, 0.6, 0.1, 0.0, 0.0,
0.0, 0.0, 0.0, 1.0, 0.0]));

var bitmap:Bitmap = new Bitmap(bitData);

sourse.push(bitmap);


есть вот такой фрагмент, тут(как вы видите) я накладываю на картинку фильтр, т.е. делаю чёрно-белой.
Мне нужно что бы при наведении курсора на картинку фильтр отключался.
Делаю так:

sourse[0].filters = null; // так было указанно в справке AS3.

ноль эмоций. Есть ещё какойнибудь способ реализовать мою задачу?

alatar
15.06.2011, 16:17
Между методом BitmapData#applyFilter и свойством DispalyObject#filters нет никакой связи. Используйте DispalyObject#filters / DispalyObject#transform, если надо добавлять и удалять фильтры.

stweet
15.06.2011, 16:21
Спасибо.
Чёт я малость не воткнул, а как в моём случае поступить???

alatar
15.06.2011, 16:23
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/geom/ColorTransform.html#includeExamplesSummary
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/filters/ColorMatrixFilter.html#includeExamplesSummary

tsarapkabel
15.06.2011, 16:24
Ты применяешь одну и ту же BitmapData как начальное и конечное изображение. Таким образом, при использовании applyFilter, старая BitmapData затирается. Есть 2 варианта решения:

1) Задействовать ещё одну BitmapData. То есть создать
var bitData:BitmapData = new BitmapData(loader.content.width, loader.content.height, false, 0);
var bitData2:BitmapData = new BitmapData(loader.content.width, loader.content.height, false, 0);
//А затем делать
bitData.applyFilter(bitData2...

2) Как сказал alatar использовать
bitmap.filters = [new ColorMatrixFilter...

Тогда сработает sourse[0].filters = null

stweet
15.06.2011, 16:31
Огромное спасибо народ!



2) Как сказал alatar использовать


bitmap.filters = [new ColorMatrixFilter...


Тогда сработает sourse[0].filters = null


Вот этот оказался самым удобным =)
Ещё раз, спасибо за помощь!