При поверхностной оценке здесь, в отличие от предыдущих классов, может возникнуть необходимость изменения типа данных аргументов.
Следовательно, этот шаг затронет не только текущий класс, но и другие, его использующие. Этот шаг мы оставим на самый последний момент.
Сейчас мы нацелены на снижение количества подсвечиваемых ошибок и первое, что стоит сделать - заняться локальными переменными.
Идем сверху вниз.
ratioTo
- пропускаем
intersect2Lines
- задаем всем аргументам тип Object
- задаем всем локальным переменным тип Number
rotation
- задаем всем аргументам тип Number
midPt
- задаем аргументам тип Number
- указываем возвращаемое значение Object
getQuadBez_RP
- здесь не указаны типы аргументов, для того, чтобы выяснить поиском по файлам (CTRL+H, File Search) ищем вызовы этого метода и, констатируя факт, указываем использованные типы:

Код AS3:
public static function getQuadBez_RP(p1:Object, c1:Object, c2:Object, p2:Object, k:Number, qcurves:Array)
- задаем тип возвращаемого значения void
- задаем тип Number переменным dx и dy
- остальным переменным задаем тип Object
bezierSplit
- задаем всем аргументам тип Number
- задаем переменной m тип Function
pointOnCurve
- задаем всем аргументам тип Number
- видим, что можем легко избавиться от подсвечивания ошибки нетипизированного доступа и заменяем процесс создания объекта на такой:

Код AS3:
public static function pointOnCurve(p1x:Number, p1y:Number, cx:Number, cy:Number, p2x:Number, p2y:Number, t:Number):Object {
return {x:p1x + t*(2*(1-t)*(cx-p1x) + t*(p2x - p1x)), y:p1y + t*(2*(1-t)*(cy-p1y) + t*(p2y - p1y))};
}
pointsOnCurve
- задаем всем аргументам тип Number
pointsOnLine
- задаем всем аргументам тип Number
- задаем переменной i тип int
- задаем всем остальным переменным тип Number
curveApproxLen
- задаем всем аргументам тип Number;
Первая часть на этом заканчивается, причем на мажорной ноте: если вы обратите внимание на панель Problems, то увидите, что число ошибок стало меньше 100 и это означает, что окончание процесса не за горами.