package {
import classes.ImageLoader;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.clearInterval;
import flash.utils.clearTimeout;
import flash.utils.setInterval;
import gs.TweenMax;
[SWF(backgroundColor = 0xFFFFFF, frameRate='30', width='466', height='320')]
public class index extends Sprite
{
private var loader:Loader
private var imArray:Array = new Array('images/mald0.jpg', 'images/mald1.jpg', 'images/mald2.jpg', 'images/mald3.jpg', 'images/mald4.jpg', 'images/mald5.jpg', 'images/mald6.jpg', 'images/mald7.jpg', 'images/mald8.jpg', 'images/mald9.jpg', 'images/mald10.jpg', 'images/mald11.jpg', 'images/mald12.jpg');
private var imCollection:Array = new Array;
private var posXArray:Array = new Array;
private var posYArray:Array = new Array;
private var scaleArray:Array = new Array;
private var iWidth:Number;
private var iHeight:Number;
private var stageWidth:Number = 240;
private var stageHeight:Number = 160;
private var mainSprite:Sprite = new Sprite();
private var intervalIndex:uint;
private var intervalCount:int = 0;
private var goTurn:Boolean = false;
public function index()
{
iWidth = 240;
iHeight = 160;
scaleArray.push(1);
for(var i:int=0;i<imArray.length;i++)
{
var imObject:Object = new Object();
imObject.imWidth = iWidth;
imObject.imHeight = iHeight;
imObject.posX = 0;
imObject.posY = 5;
imObject.scaleX = scaleArray[i]
imObject.scaleY = scaleArray[i]
imObject.url = imArray[i];
imObject.displayImage = null;
imObject.index = i;
imCollection.push(imObject);
if( (i%2 == 0) )
{
stageWidth += (iWidth / 3);
iWidth = (iWidth / 1.5);
stageHeight += (iHeight / 1.5);
iHeight = (iHeight / 3);
var nScale:Number = scaleArray[i]/1.5;
}
scaleArray.push(nScale);
}
scaleArray.pop();
imCollection.reverse();
mainSprite.graphics.beginFill(0XFFFFFF);
mainSprite.graphics.lineStyle(2)
mainSprite.graphics.drawRect(0, 0, stageWidth, stageHeight);
mainSprite.graphics.endFill();
addChild(mainSprite);
trace(stageWidth + ' - ' + stageHeight)
var yy:Number = 5;
var deltaX:int = 2;
for(i=0;i<imCollection.length;i++)
{
if( i%2 == 1 )
{
imCollection[i].posX = (stageWidth/2) - (imCollection[i].imWidth) - deltaX;
imCollection[i].posY = yy;
}else
if( i%2 == 0 )
{
imCollection[i].posX = (stageWidth/2) + deltaX;
yy = i*5 + 20;
deltaX +=3;
imCollection[i].posY = yy;
}
if(i == imCollection.length-1)
{
imCollection[i].posX = (stageWidth/2) - (imCollection[i].imWidth/2)
imCollection[i].posY = yy;
}
posXArray.push(imCollection[i].posX)
posYArray.push(imCollection[i].posY)
var loader:ImageLoader = new ImageLoader(imCollection[i].url, 240, 160);
loader.x = imCollection[i].posX;
loader.y = imCollection[i].posY;
loader.addEventListener(MouseEvent.CLICK, loaderImClick);
imCollection[i].displayImage = loader;
loader.scaleX = imCollection[i].scaleX;
loader.scaleY = imCollection[i].scaleY;
mainSprite.addChild(loader);
}
scaleArray.reverse()
}
private function loaderImClick(event:MouseEvent):void
{
var currentIndex:int = mainSprite.getChildIndex(mainSprite.getChildByName(event.currentTarget.name));
if(currentIndex != imCollection.length-1)
{
if(currentIndex%2 == 0)
{
if(currentIndex < (imCollection.length-4) )
intervalCount = ((imCollection.length-1)/2) - (currentIndex/2);
if(currentIndex == 0)
intervalCount = ((imCollection.length-1)/2);
rightTurn();
if(intervalCount > 0 && goTurn == false)
{
goTurn = true;
intervalIndex = flash.utils.setInterval(rightTurn, 300)
}
}
if(currentIndex%2 == 1)
{
if(currentIndex < (imCollection.length-3) )
intervalCount = ((imCollection.length-1)/2) - ((currentIndex-1)/2);
if(currentIndex == 1)
intervalCount = ((imCollection.length-1)/2);
leftTurn();
if(intervalCount > 0 && goTurn == false)
{
goTurn = true;
intervalIndex = flash.utils.setInterval(leftTurn, 300)
}
}
}
}
private function rightTurn():void
{
var tempItemsIndexes:Array = new Array;
var tempItems:Array = new Array;
var originalArray:Array = new Array;
for(var i:int=0;i<imCollection.length;i++)
{
originalArray.push(imCollection[i]);
if(i%2 == 0)
{
if(i != (imCollection.length-1) )
{
tempItemsIndexes.push( i+2 );
}else
{
tempItemsIndexes.push( i-1 );
}
}
if(i%2 == 1)
{
if( i != 1)
{
tempItemsIndexes.push( i-2 );
}else
{
tempItemsIndexes.push( i-1 );
}
}
tempItems.push(imCollection[tempItemsIndexes[i]]);
gs.TweenMax.allTo([imCollection[i].displayImage], 1, {x:tempItems[i].posX, y:tempItems[i].posY, scaleX:scaleArray[tempItemsIndexes[i]], scaleY:scaleArray[tempItemsIndexes[i]]});
}
for(i=0;i<imCollection.length-1;i++)
{
mainSprite.removeChildAt(0);
}
originalArray.reverse();
tempItemsIndexes.reverse();
var newImagesArray:Array = new Array
for(i=0;i<imCollection.length;i++)
{
newImagesArray.push(originalArray[tempItemsIndexes[i]])
}
imCollection = newImagesArray;
for(i=0;i<imCollection.length;i++)
{
mainSprite.addChild(newImagesArray[i].displayImage);
imCollection[i].posX = posXArray[i];
imCollection[i].posY = posYArray[i];
}
intervalCount--;
if(intervalCount <= 0)
{ flash.utils.clearInterval(intervalIndex)
goTurn = false;
}
}
private function leftTurn():void
{
var tempItemsIndexes:Array = new Array;
var tempItems:Array = new Array;
var originalArray:Array = new Array;
for(var i:int=0;i<imCollection.length;i++)
{
originalArray.push(imCollection[i]);
if(i%2 == 0)
{
if(i == 0)
{
tempItemsIndexes.push( i+1 );
}else
{
tempItemsIndexes.push( i-2 );
}
}
if(i%2 == 1)
{
if( (i+1) == (imCollection.length-1) )
{
tempItemsIndexes.push( i+1 );
}else
{
tempItemsIndexes.push( i+2 );
}
}
tempItems.push(imCollection[tempItemsIndexes[i]]);
gs.TweenMax.allTo([imCollection[i].displayImage], 1, {x:tempItems[i].posX, y:tempItems[i].posY, scaleX:scaleArray[tempItemsIndexes[i]], scaleY:scaleArray[tempItemsIndexes[i]]});
}
for(i=0;i<imCollection.length-1;i++)
{
mainSprite.removeChildAt(0);
}
originalArray.reverse();
tempItemsIndexes.reverse();
var newImagesArray:Array = new Array
for(i=0;i<imCollection.length;i++)
{
newImagesArray.push(originalArray[tempItemsIndexes[i]])
}
imCollection = newImagesArray;
for(i=0;i<imCollection.length;i++)
{
mainSprite.addChild(newImagesArray[i].displayImage);
imCollection[i].posX = posXArray[i];
imCollection[i].posY = posYArray[i];
}
intervalCount--;
if(intervalCount <= 0)
{
flash.utils.clearInterval(intervalIndex)
goTurn = false;
}
}
}
}