Показать сообщение отдельно
Старый 15.02.2012, 01:02
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 4  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Цитата:
При первом способе вызова ловлю ошибку:
"1061: Обращение к возможно неопределенному методу getFilter через ссылку статического типа satFilter"
Если вам нравится первый способ, сделайте так:
Код AS3:
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;
                       }
	}
И вызывать:
Код AS3:
public class Main extends MovieClip 
	{
		public function Main():void 
		{
			var myFilter:satFilter = new satFilter();
			mc1.filters = [myFilter.getFilter()];
		}
}

Цитата:
3)Вы добавили атрибут "static" в заголовок функции getFilter(), если его убрать, возникает ошибка 1061: Обращение к возможно неопределенному методу getFilter через ссылку статического типа Class. Как работает функция (про static-переменные понятие я имею) с атрибутом "static"?
http://www.flasher.ru/forum/showthread.php?t=125858

Цитата:
2)Вы оставили пустым конструктор класса satFilter, тем не менее все работает, однако если проинициализировать в нем же функцию getFilter() (что как я думал раньше обязательно) все работает аналогично, почему тем не менее getFilter() инициализируется даже при пустом конструкторе?
Хм...
Потому что это отдельная функция
Не знаю как точнее объяснить.

Цитата:
Соответственно, первый вопрос: почему когда я создаю экземпляр класса satFilter под названием myFilter и через него обращаюсь к функции getFilter возникает такая ошибка, а при прямом обращении к классу - нет?
Потому что satFilter - статическая функция, и вызывается без создания экземпляра класса.