Показать сообщение отдельно
Старый 02.02.2006, 17:15
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 7  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
граждане!

опять вы упёрлись в синусы-косинусы... не забывайте о специфике материала, с которым работаете. многие беды флэшовых работ происходят от того, что люди делают в них вещи неспецифичными для флэша способами.

что я предлагаю:
Код:
var radius = 200;
var amp = 20;
var speed = 1;
// количество завитков за один оборот на 360 градусов
var sin_number = 20;
//
this.createEmptyMovieClip("curve", 0);
curve._x = 200;
curve._y = 200;
curve.speed = speed;
//
curve.createEmptyMovieClip("plotter", 0);
curve.plotter.lineStyle(10, 0, 100);
curve.plotter.lineTo(1, 0);
curve.plotter.radius = radius;
curve.plotter.angle = 0;
curve.plotter.amp = amp;
curve.plotter.sin_number = sin_number;
//
curve.plotter.onEnterFrame = function()
{
	// вот тут синусоида. только по иксу.
	this._x = this.radius+Math.sin(this.angle)*this.amp;
	this.angle += (2*Math.PI/360)*this.sin_number;
};
//
curve.onEnterFrame = function()
{
	// а вот тут движение по дуге. 
	// в данном случае в качестве дуги взята окружность.
	var point = {x:this.plotter._x, y:this.plotter._y};
	this.localToGlobal(point);
	_root.lineTo(point.x, point.y);
	//
	this._rotation += this.speed;
};
//
lineStyle(2, 0xFF0000, 50);
moveTo(curve._x+radius, curve._y);
у меня ушло на этот скрипт 15 минут. из них половина - на придумывание.

если нужна не окружность а какая-то хитрая дуга, то путей несколько:

1. двигать внешний клип программно по параболе/еще какой-то формуле.

2. двигать внешний клип по гайду, нарисованному ручками (сами понимаете, чем это удобно и чем не удобно)

3. взять класс Ивана Дембицкого - Path -- и с помощью него двигать внешний клип программно по любой кривой безье, как угодно.