![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Следуя нашим правилам, начинаем с методов, правка которых вызовет наименьшее влияние на проект.
Этип критериям лучше всего подходит приватный метод midpoint: у него правильно типизированное возвращаемое значение, а поскольку он приватный, то аргументы для него будут изготовлены в этом же классе. Методология та-же, что и применятась ранее: вызываем ошибку и исправляем ее. Продублируем и закомментируем строку объявления метода. На память. Заменим все аргументы метода на один (line:LineSVG). Разумеется, такого типа не существует и, поэтому редактор подсветит ошибки. Выделяем LineSVG и комбинацией CTRL+1 вызываем quick fix, соглашаемся на предложение создать класс LineSVG. Сохраняем его, возвращаемся. Честно говоря, глядя на код хочется пойти по более короткому, хотя и теоретически опасному пути: немедленно перенести метод midpoint в класс LineSVG, поскольку он явно завистлив к данным этого класса и не использует данных текущего класса. Ну, что-ж, сократим путь. Переносим вместе с комментариями. Теперь, собственно, нужно определиться с тем, что будет из себя представлять этот класс и как будет создаваться. Задаем конструктор, метод инициализации экземпляра класса и get set методы доступа к стартовой и конечной точкам отрезка. После этого делаем метод midpoint публичным и не статическим и реализуем аналогичное поведение, но с использованием стандартных методов. Заодно исправим комментарии к методу. В итоге получаем такой класс: 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. |
![]() |
Часовой пояс GMT +4, время: 20:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|