Показать сообщение отдельно
Старый 26.05.2008, 10:50
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 10  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Mayday!Здраствуйте!

Если я правильно понял Вашу идею, то должно получиться вот такое
(100 % рабочий код - тестировал в Флеше):

Код:
var posX:Number = 200;//конечная позиция клипов - X
var posY:Number = 200;//конечная позиция клипов - Y
var posMask:Number = 0;//ваще незнаю
var finalWidth:Number = 30; //ширина мувиков, когда они выстроятся в одну колоду
var finalHeight:Number = 30; //высота мувиков, когда они выстроятся в одну колоду
var numSteps:Number = 50;//количество шагов за которое клипы достигнут конечного состояния
var counterSteps:Number = 0;//счетчик шагов
var mc_name:String = null;//промежуточная переменная
var mc_wd:Number = null;//ширина клипа
var half_wd:Number = null;//полуширина клипа
var prev_mc_rx:Number = 0;//крайняя правая координата клипа
var varStepX:Number = null;//промежуточная переменная - шаг по X

var L:Number = 6;
//длина зазора между кнопками
var N:Number = 4;
//количество кнопок
var G:Number = 4;
//скорость для кнопок
var T:Number = 1;
//скорость увеличения и уменьшения для кнопок
var Q:Number = G;



for (var i:Number = 1; i<=N; i++) 
{
	mc_name = "phil"+i; //микрооптимизация
	this.attachMovie(mc_name,mc_name,i);
	mc_wd =this[mc_name]._width; //микрооптимизация
	half_wd = mc_wd/2; //микрооптимизация
	this[mc_name]._x = prev_mc_rx+half_wd+L;//для точки регистрации в центре клипа
	this[mc_name]._y = posY;
	prev_mc_rx = this[mc_name]._x+half_wd;//для точки регистрации в центре клипа
	this[mc_name].stepX = (posX-this[mc_name]._x)/numSteps;//шаг по X
	this[mc_name].stepW = (finalWidth-mc_wd)/numSteps;//шаг по ширине клипа
	this[mc_name].stepH = (finalHeight-this[mc_name]._height)/numSteps;//шаг по высоте клипа
}

this.onEnterFrame = function():Void
{
	for (var i:Number = 1; i<=N; i++)
	{
		mc_name = "phil"+i; //микрооптимизация
		varStepX = this[mc_name].stepX;
		if (varStepX!=0)
		{
		   this[mc_name]._x +=varStepX;//движемся по X
		   this[mc_name]._width+=this[mc_name].stepW;//увеличиваем/уменьшаем длину клипа
		   this[mc_name]._height+=this[mc_name].stepH;//увеличиваем/уменьшаем высоту клипа
		}
	}
	if (counterSteps==numSteps) delete this.onEnterFrame;
	counterSteps+=1;
}
Есть еще "гемороидальный" способ добиться того же результата - класс Matrix, но я думаю для решения поставленной задачи сойдет и этот код.
Все вышеприведенные методы несколько несовершенны. Более лаконичный метод это использование класса Tween и трансформационной анимации флеша.


Последний раз редактировалось Alex_beginner; 26.05.2008 в 15:00.