Показать сообщение отдельно
Старый 20.01.2006, 18:33
Кроликов вне форума Посмотреть профиль Отправить личное сообщение для Кроликов Найти все сообщения от Кроликов
  № 5  
Ответить с цитированием
Кроликов

Регистрация: Jan 2006
Сообщений: 13
Отправить сообщение для Кроликов с помощью ICQ
Всё-таки еще раз подниму этот вопрос. Есть вот такой простой пример: http://www.knod.ru/wave.swf

Вот код, который рисует эту волну:
Код:
// Объявляю переменные
var screenHeight: Number;
var steps: Number;
var step: Number;
var i: Number;
var X = Array(), Y = Array();
var dX: Number;

// Задаю начальные значения переменных
screenHeight = 400;
steps = 13;
step = 50;
dX= 2;

// Расчет параметров волны
for(i = 0; i <= steps; i++){
	Y[i] = screenHeight - 20 - Math.random() * step;
	X[i] = i * step - step;
}

// Отрисовка волны
function wave()
{
	clear();
	for(i = 0; i <= steps; i++)X[i] -= dX;
	
	lineStyle (4, "0x000000", 100);
	moveTo(-step, screenHeight);
	beginFill("0x0000FF");
	lineTo(X[0], Y[0]);
	for(i = 0; i <= steps - 1; i++)curveTo(X[i], Y[i], (X[i+1] + X[i]) / 2, (Y[i+1] + Y[i]) / 2);
	lineTo(X[steps], screenHeight);
	endFill();			
	
	// Если координата Х уехала за пределы экрана, сдвигаю все координаты на 1 вправо
	// и генерирую новую крайнюю правую координату
	if(X[0] <= -10 )
	{
		for(i = 1; i <= steps; i++)
		{
			X[i - 1] = X[i];
			Y[i - 1] = Y[i];
		}
		Y[steps] = screenHeight - 20 - Math.random() * step * 2;
		X[steps] = X[steps - 1] + step;
	}
	
}

// main
setInterval(wave, 10);
С таким сетинтервалом отрисовка идет со скоростью 100 кадров в секунду, но при этом все-равно наблюдается раздвоение "волны", которое особенно заметно на линиях которые близки к перпендикуляру. Есть ли какие-то средства для борьбы с этим эффектом?
__________________
– Слушаю, мессир, – сказал кот, – если вы находите, что нет размаха, и я немедленно начну держаться того же мнения.