Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ColorMatrixFilter не получается. (http://www.flasher.ru/forum/showthread.php?t=202470)

timedo 18.07.2013 13:43

ColorMatrixFilter не получается.
 
Здравствуйте. Хотел попробовать использовать ColorMatrixFilter, для изменение картинки с цветной к примеру в черно белую. Но у меня вылетает ошибка:
Код:

Монтажный кадр 1, слой "Слой 1", кадр 1, строка 8        1067: Неявное приведение значения типа Myimg к несоответствующему типу flash.display:BitmapData.
Код AS3:

import flash.filters.ColorMatrixFilter;
import flash.display.Bitmap;
 
btn.addEventListener(MouseEvent.CLICK, asf); //кнопка при которой происходит преобразование
 
function asf(event:MouseEvent):void {
        var image:Myimg = new Myimg()//Myimg - это класс, который связанный в библеотеке флеша
        var bitmap:Bitmap = new Bitmap(image);
        addChild(bitmap);
        bitmap.filters = [new ColorMatrixFilter([0.767,0.927,0.429,0.95,-97,0.846,0.27,0.461,0.294,-66,0.973,0.734,0.733,0.349,-196,1,0.911,0.917,0.477,510])];
}


maincode 18.07.2013 13:50

При чем здесь фильтр? Написано же в тексте ошибки что вы пытаетесь Myimg преобразовать в BitmapData. У вас Myimg - это не BitmapData.

tsarapkabel 18.07.2013 16:55

Да, фильтр тут не при чём. В данном случае, если Myimg является DisplayObject'ом, вам необходимо отрисовать его BitmapData и создать новый Bitmap:

Код AS3:

var image:Myimg = new Myimg();
var bd:BitmapData = new BitmapData(image.width, image.height);
bd.draw(image);
 
var bitmap:Bitmap = new Bitmap(bd);
addChild(bitmap);

Добавлено через 2 часа 17 минут
А вообще я тут подумал... Не нужен Вам Bitmap!

* Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство filters (наследуемое от класса DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
* Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

(Из справки)


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

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