![]() |
|
||||||||||
|
|
|
|||||
|
День добрый
Пытаюсь применить к mc1: public class Main extends MovieClip { public function Main():void { var myFilter:satFilter = new satFilter(); mc1.filters = [myFilter]; } } public class satFilter extends MovieClip { public function satFilter():void //constructor { var disvolve:Number = 0.5; var invert:Number = (1 - disvolve); var invRed:Number = invert * 0.21267; var invGreen:Number = invert * 0.71516; var invBlue:Number = invert * 0.07217; var starkMatrix:Array = new Array(); starkMatrix = starkMatrix.concat([(invRed+disvolve), invGreen, invBlue, 0, 0,]); starkMatrix = starkMatrix.concat([invRed, (invGreen+disvolve), invBlue, 0, 0,]); starkMatrix = starkMatrix.concat([invRed, invGreen, (invBlue+disvolve), 0, 0,]); starkMatrix = starkMatrix.concat([0, 0, 0, 1, 0]); var filter:ColorMatrixFilter = new ColorMatrixFilter(starkMatrix); } } 1)1067: Неявное приведение значения типа satFilter к несоответствующему типу Class. 2)1188: Wu6Я_Illegal assignment to class satFilter. Подозреваю что либо класс фильтра возвращает не то что нужно, либо в основном классе я обращаюсь не к тому, к чему надо. Сам код фильтра рабочий, в одном основном классе все работало замечательно. Буду крайне признателен за помощь. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Эх....
Что же с вами поделать? satFilter возвращает самого себя. А фильтр может быть только GlowFilter,ColorMatrixFilter и т.д. Попробуй так: public class satFilter extends MovieClip { public function satFilter():void //constructor { } public static function getFilter():ColorMatrixFilter{ var disvolve:Number = 0.5; var invert:Number = (1 - disvolve); var invRed:Number = invert * 0.21267; var invGreen:Number = invert * 0.71516; var invBlue:Number = invert * 0.07217; var starkMatrix:Array = new Array(); starkMatrix = starkMatrix.concat([(invRed+disvolve), invGreen, invBlue, 0, 0,]); starkMatrix = starkMatrix.concat([invRed, (invGreen+disvolve), invBlue, 0, 0,]); starkMatrix = starkMatrix.concat([invRed, invGreen, (invBlue+disvolve), 0, 0,]); starkMatrix = starkMatrix.concat([0, 0, 0, 1, 0]); var filter:ColorMatrixFilter = new ColorMatrixFilter(starkMatrix); return filter; } } public class Main extends MovieClip { public function Main():void { var myFilter:satFilter = new satFilter(); mc1.filters = [myFilter.getFilter()]; } } public class Main extends MovieClip { public function Main():void { mc1.filters = [satFilter.getFilter()]; } } Отпишись. |
|
|||||
|
При первом способе вызова ловлю ошибку:
"1061: Обращение к возможно неопределенному методу getFilter через ссылку статического типа satFilter" При втором - все работает. Соответственно, первый вопрос: почему когда я создаю экземпляр класса satFilter под названием myFilter и через него обращаюсь к функции getFilter возникает такая ошибка, а при прямом обращении к классу - нет? Еще два вопроса: 2)Вы оставили пустым конструктор класса satFilter, тем не менее все работает, однако если проинициализировать в нем же функцию getFilter() (что как я думал раньше обязательно) все работает аналогично, почему тем не менее getFilter() инициализируется даже при пустом конструкторе? 3)Вы добавили атрибут "static" в заголовок функции getFilter(), если его убрать, возникает ошибка 1061: Обращение к возможно неопределенному методу getFilter через ссылку статического типа Class. Как работает функция (про static-переменные понятие я имею) с атрибутом "static"? Большое спасибо за помощь. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
public class satFilter extends MovieClip { public function satFilter():void //constructor { } public function getFilter():ColorMatrixFilter{ var disvolve:Number = 0.5; var invert:Number = (1 - disvolve); var invRed:Number = invert * 0.21267; var invGreen:Number = invert * 0.71516; var invBlue:Number = invert * 0.07217; var starkMatrix:Array = new Array(); starkMatrix = starkMatrix.concat([(invRed+disvolve), invGreen, invBlue, 0, 0,]); starkMatrix = starkMatrix.concat([invRed, (invGreen+disvolve), invBlue, 0, 0,]); starkMatrix = starkMatrix.concat([invRed, invGreen, (invBlue+disvolve), 0, 0,]); starkMatrix = starkMatrix.concat([0, 0, 0, 1, 0]); var filter:ColorMatrixFilter = new ColorMatrixFilter(starkMatrix); return filter; } } public class Main extends MovieClip { public function Main():void { var myFilter:satFilter = new satFilter(); mc1.filters = [myFilter.getFilter()]; } } Цитата:
Цитата:
Потому что это отдельная функция ![]() Не знаю как точнее объяснить. Цитата:
|
|
|||||
|
Еще раз спасибо, проблема решена.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|