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

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
По умолчанию К разработке

Помечаем в мозгу, что рефакторинг остановлен и мы начинаем заниматься разработкой.

Тактика, которую мы будем использовать такова: создаем классы и методы, которые считаем нужными, и с таким интерфейсом, который считаем удобным. Затем используем то, что нам необходимо из старого проекта, но не тупо переносим, а делаем это по аналогии, и с использованием возможностей AS3.

Начнем со структуры.
В папке svg создадим класс DocumentSVG.
В папке geom создадим папку lines и переместим в нее все классы папки geom, исправим ошибки, возникшие вследствие этого.
Вернемся к стандарту SVG, а именно к его части, описывающей остальные фигуры: http://www.w3.org/TR/SVG11/shapes.html#Introduction
и посмотрим, рисование каких фигур поддерживается:
path, rect, circle, ellipse, line, polyline, polygon.

Создадим папку shapes в папке geom. Создадим базовый класс для всех фигур: ShapeSVG.
И в этой же папке объявим интерфейс IShapeSVG:
Код AS3:
package com.itechnica.svg.geom.shapes {
	import flash.display.Graphics;			
 
	public interface IShapeSVG {
 
		function update(svgNode : XML) : void;
		function toSVG() : XML;
		function toString() : String;
		function draw(target : Graphics) : void;
 
	}
}
В этой же папке создадим классы соответственно списку: PathShape, RectangleShape, CircleShape, EllipseShape, LineShape, PolyLineShape, PolygonShape. Все их унаследуем от
ShapeSVG и имплементируем интерфейс IShapeSVG.
По-началу все они будут выглядеть как близнеца братья, вот так:
Код AS3:
package com.itechnica.svg.geom.shapes {
	import flash.display.Graphics;
 
	public class CircleShape extends ShapeSVG implements IShapeSVG {
 
		public function update(svgNode : XML) : void {
		}
 
		public function toSVG() : XML {
			return null;
		}
 
		public function toString() : String {
			return "";
		}
 
		public function draw(target : Graphics) : void {
		}
	}
}
Теперь, когда структура реализована, нам потребуется тестовый SVG файл, в котором присутствуют все виды применяемых линий и свойств. Текущий пример, который мы использовали больше не удовлетворяет нашим требованиям, поскольку от рефакторинга мы перешли к разработке.
__________________
http://realaxy.com


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