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

Регистрация: May 2008
Сообщений: 476
mayday! Вот оно. Не бог весть, что но работает.
Возможно, есть более красивые и простые варианты реализации этого, но я всего лишь beginner. А посему пусть этот код правят продвинутые флешеры, коих здесь на форуме неисчислимое множество.
На счет кода - L я убрал чтоб мозг себе им не компостировать, когда разберетесь как работает код, вставьте L в нужные места и все будет отлично.
Правда я подозреваю, что вся эта задача решается куда проще(пока незнаю как).

Код:
posX=_root.mc._x;
posY=_root.mc._height/2;
posMask=0;
center = Stage.width/2;

var L:Number = 5;
//длина зазора между кнопками
var N:Number = 5;
//количество кнопок
var G:Number = 1;
//скорость для кнопок
var Q:Number = G;
//
var indexArr:Array = [];
for (var i:Number = 1; i<=N; i++) 
{
	this.attachMovie("photo"+i, "photo"+i, i);
	this["photo"+i]._x = ((mcOld._x + mcOld._width) || mcOld._x);
	this["photo"+i]._y = posY;
	mcOld = this["photo"+i];
	indexArr.push(i);
}

var mcLast1 = this["photo"+N]._x-60;//Здесь можно другую область скролирования поставить
var mcLast2 = -this["photo1"]._width;
var index:Number = null;
var tmpVar:Object = {};

this.onEnterFrame = function():Void
{
	shag = (center-_xmouse)/10;
	for (var i:Number = 1; i<=N;i++)
	{
		
		if ((this["photo"+i]._x)>mcLast1)
		{
			tmpVar =indexArr.pop(); 
			this["photo"+tmpVar]._x=this["photo"+indexArr[0]]._x-this["photo"+tmpVar]._width;
		    indexArr.unshift(tmpVar);
		}
		if ((this["photo"+i]._x)<mcLast2)
		{
			tmpVar =indexArr.shift(); 
			this["photo"+tmpVar]._x=this["photo"+indexArr[N-2]]._x+this["photo"+indexArr[N-2]]._width;
			indexArr.push(tmpVar);			
		}
		this["photo"+i]._x+=shag;
		
	}	
			
}