Это главный класс, есть ещё Card, но он не важен.

Код AS3:
package
{
import com.greensock.TweenLite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.events.MouseEvent;
import flash.filters.DropShadowFilter;
import flash.filters.GlowFilter;
import flash.net.URLRequest;
import flash.system.Security;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
[SWF(width='200', height='310', backgroundColor='#E4CFA8', frameRate='30')]
public class Shuffle extends Sprite
{
private var card:Card;
private var bitmapData:BitmapData;
protected var deckX:Number = 104;
protected var deckY:Number = 400;
private var loader:Loader = new Loader();
[Embed(source = 'images/btn.png')]
private static const Btn:Class;
private var btn:Bitmap;
private var currentPic:int = 0;
private var currentPic2:int = 0;
public function Shuffle()
{
if (stage) init();
else this.addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init(e:Event = null):void {
Security.allowDomain("*");
this.removeEventListener(Event.ADDED_TO_STAGE, init);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var g:Graphics = this.graphics;
g.beginFill(0xE4CFA8);
g.drawRect(0, 0, 200, 310);
g.endFill();
loadDeck();
}
protected function loadDeck():void
{
var n:int = this.numChildren;
for (var i:int = 0; i < n; i++){
this.removeChild(this.getChildAt(0));
}
currentPic = 0;
currentPic2 = 0;
loader = new Loader();
var rnd:Number = randomNumber();
var request:URLRequest = new URLRequest("images/cards/" + rnd + ".jpg");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,onError);
loader.load(request);
}
protected function randomNumber(low:Number=0, high:Number=14):Number
{
return Math.floor(Math.random() * (1+high-low)) + low;
}
protected function onError(event:Event):void
{
}
protected function onComplete(event:Event):void
{
bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
showDeck();
}
private function showDeck():void
{
if (currentPic==5){
var myFormat:TextFormat = new TextFormat();
myFormat.size = 18;
myFormat.align = TextFormatAlign.CENTER;
var txt:TextField = new TextField;
txt.x = 5;
txt.y = 10;
txt.width = stage.width - 10;
txt.height = 48;
txt.multiline = true;
txt.wordWrap = true;
txt.setTextFormat(myFormat);
txt.defaultTextFormat = myFormat;
txt.selectable = false;
txt.text = 'Бла-бла';
addChild(txt);
animations2();
return;
}
card = new Card(currentPic, bitmapData);
card.x = deckX - card.width/2 - currentPic*5;
card.y = deckY - card.height/2 - currentPic*5;
card.addEventListener(MouseEvent.CLICK, onClick);
card.rotationX = 180;
card.filters = [new DropShadowFilter(1, 45, 0x000000, 0.8, 8, 8, 1)];
card.name = "card" + String (currentPic);
addChild(card);
deckAnimation(card);
currentPic++;
}
private function animations2():void
{
if(currentPic2==5){
return;
}
var cardA:Card = this.getChildByName("card" + String (currentPic2)) as Card;
if (currentPic2%2 == 0){
var xPos:Number = - 150;
} else {
xPos = 150;
}
TweenLite.to(cardA, 0.8, {x:cardA.x + xPos, onComplete:placeOnTop, onCompleteParams:[cardA, cardA.x]});
currentPic2++;
}
private function placeOnTop(mc:Card, xpos:int):void{
addChild(mc)
TweenLite.to(mc, 0.8, {x:xpos, onComplete:animations2});
}
private function deckAnimation(cardA:Card):void
{
TweenLite.to(cardA, 0.5, { x: cardA.x + 10, y: cardA.y + 10, onComplete: showDeck} );
}
protected function onClick(event:MouseEvent):void
{
var n:int = this.numChildren;
for (var i:int = 0; i < n; i++){
TweenLite.killTweensOf(this.getChildAt(i));
}
clearTable();
var card:Card = event.currentTarget as Card;
addChild(card);
TweenLite.to( card, 1, { x: 25, y: 90, rotationX: 0, onUpdate: card.reverse } );
}
protected function clearTable():void
{
var n:int = this.numChildren;
for (var i:int = 0; i < n; i++){
this.removeChild(this.getChildAt(0));
}
btn = new Btn() as Bitmap;
btn.x = 50;
btn.y = 40;
btn.smoothing = true
btn.addEventListener(MouseEvent.CLICK, onClickBtn);
var btnContainer:Sprite = new Sprite();
btnContainer.addEventListener(MouseEvent.CLICK, onClickBtn);
btnContainer.buttonMode = true;
btnContainer.addChild(btn);
addChild(btnContainer);
}
protected function onClickBtn(event:Event):void
{
loadDeck();
}
}
}