Показать сообщение отдельно
Старый 13.03.2008, 21:31
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 2  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Следуя нашим правилам, начинаем с методов, правка которых вызовет наименьшее влияние на проект.

Этип критериям лучше всего подходит приватный метод midpoint: у него правильно типизированное возвращаемое значение, а поскольку он приватный, то аргументы для него будут изготовлены в этом же классе.

Методология та-же, что и применятась ранее: вызываем ошибку и исправляем ее.

Продублируем и закомментируем строку объявления метода. На память.
Заменим все аргументы метода на один (line:LineSVG).
Разумеется, такого типа не существует и, поэтому редактор подсветит ошибки.
Выделяем LineSVG и комбинацией CTRL+1 вызываем quick fix, соглашаемся на предложение создать класс LineSVG. Сохраняем его, возвращаемся.
Честно говоря, глядя на код хочется пойти по более короткому, хотя и теоретически опасному пути: немедленно перенести метод midpoint в класс LineSVG, поскольку он явно завистлив к данным этого класса и не использует данных текущего класса. Ну, что-ж, сократим путь. Переносим вместе с комментариями.

Теперь, собственно, нужно определиться с тем, что будет из себя представлять этот класс и как будет создаваться.
Задаем конструктор, метод инициализации экземпляра класса и get set методы доступа к стартовой и конечной точкам отрезка.
После этого делаем метод midpoint публичным и не статическим и реализуем аналогичное поведение, но с использованием стандартных методов. Заодно исправим комментарии к методу.

В итоге получаем такой класс:
Код AS3:
package com.itechnica.svg {
	import flash.geom.Point;	
 
	public class LineSVG {
 
		private var startPoint : Point;
		private var endPoint : Point;
 
		public function LineSVG(start:Point, end : Point) {
			initInstance(start, end);
		}
 
		private function initInstance(start : Point, end : Point) : void {
			startPoint = start;
			endPoint = end;
		}
 
		public function get start() : Point {
			return startPoint;
		}
		public function set start(value : Point):void {
			startPoint = value;
		}
		public function get end() : Point {
			return endPoint;
		}
		public function set end(value : Point):void {
			endPoint = value;
		}
 
 
		/**
		* @returns Point the midpoint of current line segment
		*/
		public function midpoint():Point {
			return Point.interpolate(startPoint, endPoint, 0.5);
		}
	}
 
}

Теперь можно приступить к исправлению образовавшихся ошибок в методе bezierSplit.
__________________
http://realaxy.com


Последний раз редактировалось iNils; 20.12.2010 в 13:24.