Показать сообщение отдельно
Старый 04.02.2006, 22:24
veterok4 вне форума Посмотреть профиль Отправить личное сообщение для veterok4 Посетить домашнюю страницу veterok4 Найти все сообщения от veterok4
  № 25  
Ответить с цитированием
veterok4
 
Аватар для veterok4

Регистрация: Aug 2005
Адрес: живу в Миловке
Сообщений: 101
По умолчанию хммм....

Цитата:
Сообщение от silin
ps про второй скрин не понял: зачем такую линию синусоидой рисовать, рисуй по линии и не будет рваных краев...
Это я показал конечно утрированную линию... но и при 5 ps уже появляются рваные края - хотелось чистоты эксперимента...

А теперь новая трабла (сокращённый мой код со встроенным патчем Дембицкого):
Код:
	with (Math) {	
		_root.createEmptyMovieClip("myClip"+dd,dd); //создаю клипак
		_root["myClip"+dd]._x = 285;//перемещаю начало координат клипа...
		_root["myClip"+dd]._y = 275;//в центр рабочего стола
		_root.createEmptyMovieClip("curve", -1000+dd);
		var plotter=curve.createEmptyMovieClip("plotter", -1000+dd);

		//hexV = parseInt(colorIn,16);//указываю на 16-ную систему переменной...
		//eyeColor=new Color("myClip"+dd);//цвета, в ново-созданном объекте
		//eyeColor.setRGB(hexV);
		var radians = (ug.text*PI)/180;//перевожу  градусы в радианы
		var rad1 = sqrt(pow(x, 2)+pow(y, 2));//нахождение радиуса для...
		var rad2 = sqrt(pow(q, 2)+pow(w, 2));//каждой точки
		var rad3 = sqrt(pow(e, 2)+pow(r, 2));
		
		if (x<0&&y>0) {//определяю в какой четверти лежит точка и исходя из этого...
			var ugol1 = PI/2+(PI/2-asin(abs(y)/rad1));//определяю угол
		} else if (x<0&&y<0) {
			ugol1 = asin(abs(y)/rad1)+PI;
		} else if (x>0&&y<0) {
			ugol1 = 3*PI/2+(PI/2-asin(abs(y)/rad1));
		}else{ 
			ugol1 = asin(y/rad1);
		}
		
		if (q<0&&w>0) {
			var ugol2 = PI/2+(PI/2-asin(abs(w)/rad2));
		} else if (q<0&&w<0) {
			ugol2 = asin(abs(w)/rad2)+PI;
		} else if (q>0&&w<0) {
			ugol2 = 3*PI/2+(PI/2-asin(abs(w)/rad2));
		} else{
			ugol2 = asin(w/rad2);
		}		
		
		if (e<0&&r>0) {
			var ugol3 = PI/2+(PI/2-asin(abs(r)/rad3));
		} else if (e<0&&r<0) {
			ugol3 = asin(abs(r)/rad3)+PI;
		} else if (e>0&&r<0) {
			ugol3 = 3*PI/2+(PI/2-asin(abs(r)/rad3));
		} else{
			ugol3 = asin(r/rad3);
		}
				
		var tt = 360/ug.text;//угол поворота
		for (i=0; i<tt; i++) {//цикл прорисовки
			var u1 = ugol1+radians;//нахожу угол приращения для кождой точки
			var u2 = ugol2+radians;
			var u3 = ugol3+radians;
			x2 = rad1*cos(u1);//переназначаю координаты точек
			y2 = rad1*sin(u1);
			q2 = rad2*cos(u2);
			w2 = rad2*sin(u2);
			e2 = rad3*cos(u3);
			r2 = rad3*sin(u3);
			var sSomeString : String = _root.czve.inValue;
			var nSomeNumber : Number = Number( "0x" + sSomeString ); // Number ( ... ) - есть каст.
			_root['myClip'+dd].lineStyle(tip.text, nSomeNumber, alfa.text);//задаю параметры линии
			_root['myClip'+dd].moveTo(x2, y2);//ставим на первый анкер 
			_root['myClip'+dd].curveTo(q2, w2, e2, r2);//рисуем через контрольную до второго анкера

			var path = new Path(x2+285, y2+275, q2+285, w2+275, e2+285, r2+275);//© Ivan Dembicki, http://www.dembicki.org
			/////////синусода по кривой/////////////////////////
			p=path.getPoint(0);
			moveTo(p._x,p._y);
			lineStyle(tip.text, nSomeNumber, alfa.text);
			curve._rotation=p._rotation;
			ampl=10;//амплитуда
			phase=10;
			for(var i=0;i<path.path_length;i++){
				p=path.getPoint(i);
				plotter._y=ampl*sin(PI*i/phase);
				curve._rotation=p._rotation;
				curve._x=p._x;
				curve._y=p._y;
				var gp = {x:plotter._x, y:plotter._y};
				curve.localToGlobal(gp);
				lineTo(gp.x,gp.y);
				trace("myClip"+dd);//слежу за количеством итераций
				dd=dd+1;//приращиваю переменную глубины мувика
};
			ugol1 = u1;//меняем переменные углов (приращение)
			ugol2 = u2;
			ugol3 = u3;
		}
	schet = schet+1;//приращение счётчика истории создания клипов
	}
Дело в том, что флеш производит чуть более 21000 итераций и ...виснет! А всё потому что в цикле патча Дембицкого происходит НУ ОЧЕНЬ много поворотов мувика... Нельзя ли хоть как то сократить их? Или поискать альтернативный путь?
Изображения
Тип файла: jpg глюк 3.jpg (15.5 Кб, 45 просмотров)
__________________
Тссс... не вспугните!


Последний раз редактировалось veterok4; 04.02.2006 в 22:25. Причина: ошибка