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

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

Оказывается рановато заменять старые вызовы на новые.
Взглянув на метод Math2.getQuadBez_RP видим, что предварительно стоит заняться удалением локальных переменных p1, c1, c2, p2, которые дублируют точки, передаваемые в аргументах.
Для этого комментируем строку инициализации переменной и заменяем подсвечивающиеся ошибки на соответствующий аргумент. После чего удаляем ненужные закомментированные строки и получаем в итоге вот такой метод:
Код AS3:
public static function getQuadBez_RP(point1:Point, control1:Point, control2:Point, point2:Point, k:Number, qcurves:Array):void {
	// find intersection between bezier arms
	var s:Point = intersect2Lines (point1, control1, control2, point2);
	// find distance between the midpoints
	var dx:Number = (point1.x + point2.x + s.x * 4 - (control1.x + control2.x) * 3) * .125;
	var dy:Number = (point1.y + point2.y + s.y * 4 - (control1.y + control2.y) * 3) * .125;
	// split curve if the quadratic isn't close enough
	if (dx*dx + dy*dy > k) {
		var halves:Array = bezierSplit (point1.x, point1.y, control1.x, control1.y, control2.x, control2.y, point2.x, point2.y);
		var bezier0:Array = halves[0]; 
		var bezier1:Array = halves[1];
		// recursive call to subdivide curve
		getQuadBez_RP (point1, bezier0[1], bezier0[2], bezier0[3], k, qcurves);
		getQuadBez_RP(bezier1[0], bezier1[1], bezier1[2], point2,    k, qcurves);
	} else {
		// end recursion by saving points
		qcurves.push({p1x:point1.x, p1y:point1.y, cx:s.x, cy:s.y, p2x:point2.x, p2y:point2.y});
	}
}
__________________
http://realaxy.com


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