STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228060
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/97465816?noj=FRM97465816-26DC" width="1" height="1"></div>

tetris4.swf

This is the info page for
Flash #89512

(Click the ID number above for more basic data on this flash file.)


Text
NEW

NEW

OPTIONS

OPTIONS

GALLERY

GALLERY

HELP

HELP

CONTINUE

CONTINUE

Help

To Play:

Left Arrow - moves the brick left
Right Arrow - moves the brick right
Up Arrow - rotates the brick CW
Down Arrow - drops the brick in place

exit

exit

credits

credits

credits

Credits

Game designer:
Programmer:
Artist:

Johan Karlson
Dark Snyder
Madam X

Voice Actors and Actresses:

Sophia Roberts, Jaci Engel, Aces Mulhaland, Jim Mint

Recording Studios:

BACK

BACK

Score

0000000

Level

exit

exit

NEXT

NEXT

PREV

PREV

Speed

Music

Sound

options

Screen size

quality

easy

easy

easy

normal

normal

hard

hard

on

on

off

off

full screen

full screen

window

window

low

low

medium

medium

high

high

Good Job

New Level

GAME OVER

ActionScript [AS3]

Section 1
//Level_17 (assets_fla.Level_17) package assets_fla { import flash.display.*; import flash.text.*; public dynamic class Level_17 extends MovieClip { public var id_text:TextField; } }//package assets_fla
Section 2
//Score_16 (assets_fla.Score_16) package assets_fla { import flash.display.*; import flash.text.*; public dynamic class Score_16 extends MovieClip { public var id_text:TextField; } }//package assets_fla
Section 3
//DollManager (doll.DollManager) package doll { import flash.events.*; import flash.display.*; import flash.net.*; public class DollManager extends EventDispatcher { private var m_urlRequests:Array; private var m_curDollLoader:Loader; private var m_loaders:Array; private var m_dollArray:Array; public function DollManager(){ m_dollArray = []; m_urlRequests = []; m_loaders = []; super(); } public function load(xml:XML):void{ var elem:XML; var url:String; var dollelem:XML; var id:String; var symbol:String; for each (elem in xml.url_resource) { url = elem.@path; m_urlRequests.push(new URLRequest(url)); for each (dollelem in elem.doll_symbol) { id = dollelem.@id; symbol = dollelem.@symbol; m_dollArray.push({id:id, url:url, symbol:symbol, loader:null}); }; }; loadURLResource(); } private function onComplete(event:Event):void{ var contentLoaderInfo:LoaderInfo = (event.target as LoaderInfo); contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); loadURLResource(); } public function getlistOfDollNames():Array{ var obj:Object; var arr:Array = []; for each (obj in m_dollArray) { arr.push(obj.id); }; return (arr); } private function loadURLResource():void{ var loader:Loader; if (m_urlRequests.length > 0){ loader = new Loader(); m_loaders.push(loader); m_dollArray[(m_dollArray.length - 1)]["loader"] = loader; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(m_urlRequests.shift()); } else { dispatchEvent(new Event(Event.COMPLETE, false)); }; } public function buildDoll(_name:String):MovieClip{ var myClass:Class; var doll_object:Object; var loader:Loader; for each (doll_object in m_dollArray) { if (doll_object.id == _name){ m_curDollLoader = doll_object.loader; loader = doll_object.loader; trace(loader.contentLoaderInfo.sameDomain); myClass = (loader.contentLoaderInfo.applicationDomain.getDefinition(doll_object.symbol) as Class); return (new (myClass)); }; }; return (null); } public function getAsset(_assetId:String):Class{ var myClass:Class; if (m_curDollLoader){ myClass = (m_curDollLoader.contentLoaderInfo.applicationDomain.getDefinition(_assetId) as Class); }; return (myClass); } public function unLoad():void{ var loader:Loader; if (m_curDollLoader){ m_curDollLoader = null; }; for each (loader in m_loaders) { if (loader.contentLoaderInfo != null){ loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); }; loader.unload(); }; m_dollArray = null; m_urlRequests = null; m_loaders = null; } } }//package doll
Section 4
//DollPanel (doll.DollPanel) package doll { import flash.events.*; import tetris_game.*; import flash.display.*; import flash.geom.*; public class DollPanel extends Sprite implements IObserver { private var m_panelMC:MovieClip; private var m_dollMC:MovieClip; private var m_curStage:int; private var m_numStages:int; public function DollPanel(){ super(); trace("dollPallel::constructor"); } public function update(flags:uint):void{ if (m_dollMC == null){ return; }; if ((Tetris.TYPE_LEVEL & flags) != 0){ if (m_curStage < (m_numStages - 1)){ dispatchEvent(new Event("reward", true)); m_dollMC.play(); m_curStage++; } else { m_dollMC.gotoAndPlay(("stage" + m_numStages)); dispatchEvent(new Event("gameVictory", true)); }; } else { if ((Tetris.TYPE_GAMEOVER & flags) != 0){ m_dollMC.gotoAndStop(1); m_curStage = 0; dispatchEvent(new Event("gameOver", true)); }; }; } private function centerDisplayObject(_sprite:DisplayObject, _target:DisplayObject):void{ var targetRect:Rectangle = _target.getRect(_target); var spriteRect:Rectangle = _sprite.getRect(_target); _sprite.x = ((_sprite.x - spriteRect.left) + (targetRect.left + ((targetRect.width - spriteRect.width) / 2))); _sprite.y = ((_sprite.y - spriteRect.top) + (targetRect.top + ((targetRect.height - spriteRect.height) / 2))); } private function onAnimationEnd(event:Event):void{ event.stopImmediatePropagation(); m_dollMC.removeEventListener("animationEnd", onAnimationEnd); dispatchEvent(new Event("nextDoll", true)); } public function init(_dollMC:MovieClip, _panelMC:MovieClip):void{ var fl:FrameLabel; trace("dollPallel::init"); if (((((!((m_dollMC == null))) && (!((m_dollMC == _dollMC))))) && (!((m_dollMC.parent == null))))){ m_dollMC.parent.removeChild(m_dollMC); m_dollMC.removeEventListener("animationEnd", onAnimationEnd); m_dollMC = null; }; m_dollMC = _dollMC; m_dollMC.gotoAndStop(1); m_curStage = 0; m_numStages = 0; var labels:Array = m_dollMC.currentLabels; for each (fl in labels) { if (fl.name.search("stage") != -1){ m_numStages = (m_numStages + 1); }; }; m_panelMC = _panelMC; m_dollMC.addEventListener("animationEnd", onAnimationEnd, false, 0, true); trace(m_dollMC.name, m_panelMC.name); m_panelMC.parent.addChild(this); m_panelMC.parent.addChild(m_dollMC); centerDisplayObject(m_dollMC, m_panelMC); } } }//package doll
Section 5
//CSliderControl (options.CSliderControl) package options { import flash.events.*; import flash.display.*; import flash.geom.*; public class CSliderControl { private var m_position:Number; private var m_rect:Rectangle; private var m_drag:Boolean; private var m_sym:MovieClip; private var m_callback:Function; private var m_positionToValue:Number; private var m_postionToFrame:Number; private var m_value:Number; private static const EPSILON:Number = 0.05; public function CSliderControl(_symbol:MovieClip, _value:Number, _callback:Function){ super(); m_sym = _symbol; m_callback = _callback; m_postionToFrame = (Number(m_sym.totalFrames) / m_sym.width); m_positionToValue = (1 / m_sym.width); setValue(_value); m_sym.parent.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, true); m_sym.parent.addEventListener(MouseEvent.MOUSE_UP, onMouseUp, false, 0, true); } private function onMouseDown(event:MouseEvent):void{ if (isHit(event.stageX, event.stageY)){ m_drag = true; m_position = (event.stageX - m_rect.left); setFrame(m_position); m_sym.parent.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove, false, 0, true); }; } private function onMouseUp(event:MouseEvent):void{ if (m_drag){ m_drag = false; m_value = (Math.floor(((m_position * m_postionToFrame) + 0.5)) / m_sym.totalFrames); if (m_value < EPSILON){ m_value = 0; } else { if (m_value >= (1 - EPSILON)){ m_value = 1; }; }; m_sym.parent.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); m_callback(m_value); }; } public function getValue():Number{ return (m_value); } private function isHit(mouseX:Number, mouseY:Number):Boolean{ if (m_sym.stage != null){ m_rect = m_sym.getRect(m_sym.stage); if ((((((((mouseX >= m_rect.left)) && ((mouseX <= m_rect.right)))) && ((mouseY >= m_rect.top)))) && ((mouseY <= m_rect.bottom)))){ return (true); }; }; return (false); } private function setFrame(pos:Number):void{ m_sym.gotoAndStop((int((pos * m_postionToFrame)) + 1)); } public function setValue(_value:Number):void{ if ((((_value > 0)) && ((_value < 1)))){ m_value = _value; m_sym.gotoAndStop((int((_value * m_sym.totalFrames)) + 1)); }; } private function onMouseMove(event:MouseEvent):void{ if (((m_drag) && (isHit(event.stageX, event.stageY)))){ m_position = (event.stageX - m_rect.left); setFrame(m_position); }; } } }//package options
Section 6
//ASoundComponent (sounds.ASoundComponent) package sounds { import flash.media.*; import flash.errors.*; public class ASoundComponent { protected var m_nameID:String; protected var m_sndTransform:SoundTransform; protected var m_parent:ASoundComposite; public function ASoundComponent(_name:String, _sndTrans:SoundTransform){ super(); m_nameID = _name; m_sndTransform = _sndTrans; } function getComposite():ASoundComposite{ return (null); } public function set pan(_pan:Number):void{ m_sndTransform.pan = _pan; update(); } public function stop():void{ throw (new IllegalOperationError("play not supported")); } protected function calcSndTransform(_sndTrans:SoundTransform=null):SoundTransform{ if (_sndTrans == null){ _sndTrans = new SoundTransform(); }; if (m_parent != null){ _sndTrans = m_parent.calcSndTransform(_sndTrans); }; _sndTrans.volume = (_sndTrans.volume * m_sndTransform.volume); _sndTrans.pan = (_sndTrans.pan + m_sndTransform.pan); if (_sndTrans.pan < -1){ _sndTrans.pan = -1; }; if (_sndTrans.pan > 1){ _sndTrans.pan = 1; }; return (_sndTrans); } public function update():void{ throw (new IllegalOperationError("update not supported")); } public function get parent():ASoundComposite{ return (m_parent); } public function get name():String{ return (m_nameID); } function removeParentRef():void{ this.m_parent = null; stop(); } function setParentRef(_parent:ASoundComposite):void{ this.m_parent = _parent; update(); } public function set volume(_vol:Number):void{ m_sndTransform.volume = _vol; update(); } public function get volume():Number{ return (m_sndTransform.volume); } public function play(_name:String=""):ASoundComponent{ throw (new IllegalOperationError("play not supported")); } public function get pan():Number{ return (m_sndTransform.pan); } public function setSoundTransform(_vol:Number, _pan:Number):void{ m_sndTransform.volume = _vol; m_sndTransform.pan = _pan; update(); } } }//package sounds
Section 7
//ASoundComposite (sounds.ASoundComposite) package sounds { import flash.media.*; import flash.errors.*; public class ASoundComposite extends ASoundComponent { public function ASoundComposite(_name:String, _sndTrans:SoundTransform){ super(_name, _sndTrans); } public function removeChild(c:ASoundComponent):ASoundComponent{ throw (new IllegalOperationError("removeChild not supported")); } public function addChild(c:ASoundComponent):ASoundComponent{ throw (new IllegalOperationError("addChild not supported")); } public function getChildByName(c:String):ASoundComponent{ throw (new IllegalOperationError("removeChild not supported")); } } }//package sounds
Section 8
//SoundAmbCollection (sounds.SoundAmbCollection) package sounds { import flash.media.*; public class SoundAmbCollection extends SoundCollection { public function SoundAmbCollection(_name:String, _sndTransform:SoundTransform=null){ super(_name, _sndTransform); } override public function play(_name:String=""):ASoundComponent{ var _sound:ASoundComponent; for each (_sound in m_sounds) { _sound.play(""); }; return (this); } } }//package sounds
Section 9
//SoundAmbient (sounds.SoundAmbient) package sounds { import flash.events.*; import flash.media.*; import flash.utils.*; public class SoundAmbient extends SoundFx { protected var m_delay:int; protected var m_timer:Timer; protected var m_playing:Boolean; public function SoundAmbient(_name:String, _delay:int, _sound:Sound, _sndTransform:SoundTransform=null){ super(_name, _sound, _sndTransform); m_delay = _delay; } override public function play(_name:String=""):ASoundComponent{ if (m_playing){ return (null); }; m_playing = true; if (m_delay == 0){ m_soundChannel = m_sound.play(0, int.MAX_VALUE, calcSndTransform()); if (m_soundChannel != null){ m_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete); }; return (this); //unresolved jump }; m_timer = new Timer(m_delay); m_timer.addEventListener(TimerEvent.TIMER, onTimedPlay); m_timer.start(); return (this); } private function onSoundComplete(e:Event):void{ m_soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundComplete); m_soundChannel = null; if (m_delay){ m_timer.start(); }; } private function onTimedPlay(e:Event):void{ if (m_soundChannel != null){ return; }; m_timer.stop(); m_soundChannel = m_sound.play(0, 1, calcSndTransform()); if (m_soundChannel != null){ m_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete); }; } override public function stop():void{ if (m_soundChannel != null){ m_soundChannel.stop(); }; if (m_timer != null){ m_timer.stop(); m_timer.removeEventListener(TimerEvent.TIMER, onTimedPlay); }; m_playing = false; } } }//package sounds
Section 10
//SoundCollection (sounds.SoundCollection) package sounds { import flash.media.*; import flash.utils.*; import flash.errors.*; public class SoundCollection extends ASoundComposite { public var m_sounds:Dictionary; protected var m_numSounds:int; protected static const m_nullSound:ASoundComponent = new SoundNull(); public function SoundCollection(_nameID:String, _sndTransform:SoundTransform=null){ if (_sndTransform == null){ _sndTransform = new SoundTransform(); }; super(_nameID, _sndTransform); m_sounds = new Dictionary(); } override function getComposite():ASoundComposite{ return (this); } override public function stop():void{ var snd:ASoundComponent; for each (snd in m_sounds) { snd.stop(); }; } override public function getChildByName(_name:String):ASoundComponent{ var arr:Array = _name.split(":", 2); if ((((arr.length > 1)) && ((m_sounds[arr[0]] is ASoundComposite)))){ return ((m_sounds[arr[0]] as ASoundComposite).getChildByName(arr[1])); }; if (m_sounds[_name]){ return (m_sounds[_name]); }; return (m_nullSound); } override public function update():void{ var _sound:ASoundComponent; for each (_sound in m_sounds) { _sound.update(); }; } public function clear():void{ var sound:ASoundComponent; for each (sound in m_sounds) { removeChild(sound); }; } private function safeRemove(c:ASoundComponent):void{ if (c.getComposite() == this){ removeChild(c); } else { c.removeParentRef(); m_sounds[c.name] = null; delete m_sounds[c.name]; }; } override public function play(_name:String=""):ASoundComponent{ var arr:Array = _name.split(":", 2); if ((((arr.length > 1)) && ((m_sounds[arr[0]] is ASoundComposite)))){ return ((m_sounds[arr[0]] as ASoundComponent).play(arr[1])); }; if ((((arr.length > 0)) && (!((m_sounds[arr[0]] == null))))){ return (m_sounds[arr[0]].play()); }; return (m_nullSound); } override public function addChild(c:ASoundComponent):ASoundComponent{ m_sounds[c.name] = c; c.setParentRef(this); m_numSounds++; return (c); } override public function removeChild(c:ASoundComponent):ASoundComponent{ var child:ASoundComponent; if (c == this){ for each (child in m_sounds) { safeRemove(child); }; m_sounds = new Dictionary(); removeParentRef(); } else { if (m_sounds[c.name] != null){ safeRemove(c); m_numSounds--; } else { throw (new IllegalOperationError("NO_CASE")); }; }; return (c); } } }//package sounds
Section 11
//SoundFx (sounds.SoundFx) package sounds { import flash.events.*; import flash.media.*; public class SoundFx extends ASoundComponent { protected var m_soundChannel:SoundChannel; protected var m_sound:Sound; public function SoundFx(_name:String, _sound:Sound, _sndTransform:SoundTransform=null){ if (_sndTransform == null){ _sndTransform = new SoundTransform(); }; super(_name, _sndTransform); m_sound = _sound; } private function onSoundComplete(e:Event):void{ stop(); } override public function stop():void{ if (m_soundChannel != null){ m_soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundComplete); m_soundChannel.stop(); m_soundChannel = null; }; } override public function play(_name:String=""):ASoundComponent{ if (m_soundChannel != null){ return (this); }; m_soundChannel = m_sound.play(0, 1, calcSndTransform()); if (m_soundChannel != null){ m_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete); }; return (this); } override public function update():void{ if (m_soundChannel != null){ m_soundChannel.soundTransform = calcSndTransform(); }; } } }//package sounds
Section 12
//SoundNull (sounds.SoundNull) package sounds { import flash.media.*; public class SoundNull extends ASoundComponent { public function SoundNull(... _args){ super("", null); } override public function update():void{ } override function getComposite():ASoundComposite{ return (super.getComposite()); } override public function stop():void{ } override public function set volume(value:Number):void{ } override protected function calcSndTransform(_sndTrans:SoundTransform=null):SoundTransform{ return (_sndTrans); } override public function get volume():Number{ return (0); } override public function set pan(value:Number):void{ } override public function get name():String{ return (super.name); } override public function play(_name:String=""):ASoundComponent{ return (this); } override public function get pan():Number{ return (0); } } }//package sounds
Section 13
//SoundRndCollection (sounds.SoundRndCollection) package sounds { import flash.events.*; import flash.media.*; import flash.utils.*; public class SoundRndCollection extends SoundCollection { protected var m_delay:int; protected var m_timer:Timer; protected var m_sndList:Array; protected var m_playing:Boolean; public function SoundRndCollection(_nameID:String, _delay:int, _sndTransform:SoundTransform=null){ super(_nameID, _sndTransform); m_delay = _delay; m_sndList = new Array(); } override public function stop():void{ super.stop(); if (m_timer != null){ m_timer.stop(); m_timer.removeEventListener(TimerEvent.TIMER, onTimedPlay); }; m_playing = false; } private function onTimedPlay(e:Event):void{ var rnd:int = (Math.random() * m_numSounds); (m_sndList[rnd] as ASoundComponent).play(""); } override public function play(_name:String=""):ASoundComponent{ var rnd:int; if (((m_playing) || ((m_numSounds == 0)))){ return (null); }; m_playing = true; if (m_delay == 0){ rnd = (Math.random() * m_numSounds); (m_sndList[rnd] as ASoundComponent).play(); return (this); }; m_timer = new Timer(m_delay); m_timer.addEventListener(TimerEvent.TIMER, onTimedPlay, false, 0, true); m_timer.start(); return (this); } override public function addChild(c:ASoundComponent):ASoundComponent{ m_sndList.push(c); return (super.addChild(c)); } } }//package sounds
Section 14
//CGalleryState (state.CGalleryState) package state { import flash.events.*; public class CGalleryState implements IState { private var m_app:Main; public function CGalleryState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ var num_str:String; var num:int; var btn:String = event.target.name; switch (btn){ case "btn_exit": m_app.enterLobby(); break; case "btn_next": m_app.galleryNextImage(); break; case "btn_prev": m_app.galleryPrevImage(); break; case "btn_back": m_app.galleryBack(); break; default: if (btn.search(/image/) != -1){ num_str = btn.match(/\d+\.?\d*/)[0]; trace(num_str); num = (int(num_str) - 1); m_app.gallerySelectDoll(num); }; break; }; } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 15
//CGameOverState (state.CGameOverState) package state { import flash.events.*; public class CGameOverState implements IState { private var m_app:Main; public function CGameOverState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ m_app.enterLobby(); } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ m_app.enterLobby(); } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 16
//CGameState (state.CGameState) package state { import flash.events.*; import flash.ui.*; public class CGameState implements IState { private var m_app:Main; public function CGameState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ var keyCode:uint = event.keyCode; switch (keyCode){ case Keyboard.ESCAPE: m_app.tetris.endGame(); m_app.enterLobby(); break; case Keyboard.LEFT: m_app.tetris.moveBlockLeft(); break; case Keyboard.RIGHT: m_app.tetris.moveBlockRight(); break; case Keyboard.UP: m_app.tetris.rotateBlock(); break; case Keyboard.DOWN: m_app.tetris.moveBlockDown(); break; case Keyboard.SPACE: m_app.tetris.newGame(); break; }; } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 17
//CHelpState (state.CHelpState) package state { import flash.events.*; public class CHelpState implements IState { private var m_app:Main; public function CHelpState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ if (event.target.name == "btn_exit"){ m_app.enterLobby(); }; } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 18
//CIntroState (state.CIntroState) package state { import flash.events.*; public class CIntroState implements IState { private var m_app:Main; public function CIntroState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ if (m_app.flagSkippable){ m_app.enterLobby(); }; } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ if (m_app.flagSkippable){ m_app.enterLobby(); }; } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 19
//CLobbyState (state.CLobbyState) package state { import flash.events.*; public class CLobbyState implements IState { private var m_app:Main; public function CLobbyState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ if (event.target.name == "btn_new"){ m_app.playGame(); } else { if (event.target.name == "btn_options"){ m_app.enterOptions(); } else { if (event.target.name == "btn_help"){ m_app.enterHelp(); } else { if (event.target.name == "btn_gallery"){ m_app.enterGallery(); }; }; }; }; } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 20
//COptionsState (state.COptionsState) package state { import flash.events.*; public class COptionsState implements IState { private var m_app:Main; public function COptionsState(_app:Main){ super(); m_app = _app; } public function OnMouseClick(event:MouseEvent):void{ if (event.target.name == "btn_exit"){ m_app.enterLobby(); }; } public function OnMouseUp(event:MouseEvent):void{ } public function OnKeyDown(event:KeyboardEvent):void{ } public function OnMouseDown(event:MouseEvent):void{ } } }//package state
Section 21
//Tetris (tetris_game.Tetris) package tetris_game { import flash.events.*; import flash.utils.*; public class Tetris implements ISubject { private var m_nextBlock:int; private var m_observers:Array; private var m_board:Array; private var m_level:int; private var m_state:uint;// = 1 private var m_score:int; private var m_block:Array; private var m_deletedRows:Array; private var m_difficulty:int; private var m_curBlock:int; private var m_dels:int; private var m_time:Timer; private var m_difficultyTiming:Array; private var m_blockX:int; private var m_blockY:int; public static const TYPE_BOARD:uint = 1; private static const BOARD_HEIGHT:int = 20; public static const STATE_PAUSE:uint = 4; public static const STATE_PLAY:uint = 2; private static const BLOCK_SHAPES:Array = [[0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0], [2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0], [3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 4, 0, 0, 4, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0], [0, 0, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0], [5, 0, 0, 0, 5, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0], [5, 5, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [5, 5, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0], [6, 0, 0, 0, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0], [6, 6, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0], [6, 6, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 6, 0, 0, 0, 6, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0], [7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0], [7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0]]; private static const BLOCK_WIDTH:int = 4; public static const TYPE_NEXTBLOCK:uint = 16; public static const TYPE_LEVEL:uint = 8; public static const TYPE_ROWDELETE:uint = 2; public static const STATE_IDLE:uint = 1; public static const TYPE_GAMEOVER:uint = 32; public static const TYPE_SCORE:uint = 4; private static const BOARD_WIDTH:int = 10; private static const BLOCK_HEIGHT:int = 4; public function Tetris(){ m_difficultyTiming = [750, 500, 250, 125]; super(); } public function get level():int{ return (m_level); } private function GameOver():void{ var indx:int; if (m_time){ m_time.removeEventListener(TimerEvent.TIMER, playGame); m_time.stop(); m_time = null; }; while (indx < m_board.length) { m_board[indx] = 0; indx++; }; m_state = STATE_IDLE; notify((TYPE_BOARD | TYPE_GAMEOVER)); } public function moveBlockDown():void{ if (m_state != STATE_PLAY){ return; }; while (CanPut()) { m_blockY = (m_blockY + 1); }; m_blockY = (m_blockY - 1); PutBlock(); notify(TYPE_BOARD); } private function DeleteRow():void{ var sum:int; var del:int; var i:int; var ii:int; var jj:int; var j:int; m_deletedRows = []; j = 0; while (j < BOARD_HEIGHT) { sum = 0; i = 0; while (i < BOARD_WIDTH) { if (m_board[(i + (j * BOARD_WIDTH))] != 0){ sum = (sum + 1); }; i++; }; if (sum == BOARD_WIDTH){ m_deletedRows.push(j); jj = j; while (jj >= 1) { ii = 0; while (ii < BOARD_WIDTH) { m_board[(ii + (jj * BOARD_WIDTH))] = m_board[(ii + ((jj - 1) * BOARD_WIDTH))]; ii++; }; jj--; }; del++; }; j++; }; if (m_deletedRows.length > 0){ notify(Tetris.TYPE_ROWDELETE); GameScore(del); generateNewBlock(); }; } public function get deletedRows():Array{ return (m_deletedRows); } private function generateBlock(kind:int):Array{ var block:Array; switch (kind){ case 0: block = BLOCK_SHAPES[0]; break; case 16: block = BLOCK_SHAPES[1]; break; case 32: block = BLOCK_SHAPES[2]; break; case 48: block = BLOCK_SHAPES[3]; break; case 1: block = BLOCK_SHAPES[4]; break; case 17: block = BLOCK_SHAPES[5]; break; case 33: block = BLOCK_SHAPES[6]; break; case 49: block = BLOCK_SHAPES[7]; break; case 2: block = BLOCK_SHAPES[8]; break; case 18: block = BLOCK_SHAPES[9]; break; case 34: block = BLOCK_SHAPES[10]; break; case 50: block = BLOCK_SHAPES[11]; break; case 3: block = BLOCK_SHAPES[12]; break; case 19: block = BLOCK_SHAPES[13]; break; case 35: block = BLOCK_SHAPES[14]; break; case 51: block = BLOCK_SHAPES[15]; break; case 4: block = BLOCK_SHAPES[16]; break; case 20: block = BLOCK_SHAPES[17]; break; case 36: block = BLOCK_SHAPES[18]; break; case 52: block = BLOCK_SHAPES[19]; break; case 5: block = BLOCK_SHAPES[20]; break; case 21: block = BLOCK_SHAPES[21]; break; case 37: block = BLOCK_SHAPES[22]; break; case 53: block = BLOCK_SHAPES[23]; break; case 6: block = BLOCK_SHAPES[24]; break; case 22: block = BLOCK_SHAPES[25]; break; case 38: block = BLOCK_SHAPES[26]; break; case 54: block = BLOCK_SHAPES[27]; break; }; return (block); } public function get score():int{ return (m_score); } public function register(observer:IObserver):void{ if (m_observers == null){ m_observers = []; }; m_observers.push(observer); } public function get height():int{ return (BOARD_HEIGHT); } private function GameScore(del:int):void{ if (del < 1){ return; }; m_dels = (m_dels + del); m_score = (((m_score + (100 * del)) + ((del - 1) * 25)) + ((m_dels / 10) * 25)); var oldLvl:int = m_level; m_level = int((m_dels / 5)); if (oldLvl == m_level){ notify(TYPE_SCORE); } else { notify((TYPE_SCORE | TYPE_LEVEL)); }; } public function clearBoard():void{ var indx:int; if (m_state != STATE_IDLE){ m_board = new Array((BOARD_WIDTH * BOARD_HEIGHT)); while (indx < m_board.length) { m_board[indx] = 0; indx++; }; m_nextBlock = Math.floor((Math.random() * 7)); generateNewBlock(); m_deletedRows = []; m_time = new Timer(m_difficultyTiming[Math.min(m_level, (m_difficultyTiming.length - 1))]); m_time.addEventListener(TimerEvent.TIMER, playGame); m_time.start(); notify(TYPE_BOARD); }; } public function newGame(lvl:int=1, dif:int=1, score:int=0):void{ var indx:int; if (m_state != STATE_IDLE){ return; }; m_state = STATE_PLAY; m_board = new Array((BOARD_WIDTH * BOARD_HEIGHT)); while (indx < m_board.length) { m_board[indx] = 0; indx++; }; m_score = score; m_level = lvl; m_difficulty = dif; m_dels = (m_level * 5); m_nextBlock = Math.floor((Math.random() * 7)); generateNewBlock(); m_deletedRows = []; m_time = new Timer(m_difficultyTiming[Math.min(m_difficulty, (m_difficultyTiming.length - 1))]); m_time.addEventListener(TimerEvent.TIMER, playGame); m_time.start(); notify((TYPE_BOARD | TYPE_SCORE)); } public function get difficulty():int{ return (m_difficulty); } public function unregister(observer:IObserver):void{ var i:int; if (m_observers == null){ return; }; while (i < m_observers.length) { if (m_observers[i] == observer){ m_observers.splice(i, 1); break; }; i++; }; } public function get width():int{ return (BOARD_WIDTH); } public function notify(type:uint):void{ var observer:IObserver; for each (observer in m_observers) { observer.update(type); }; } public function moveBlockRight():void{ if (m_state != STATE_PLAY){ return; }; m_blockX = (m_blockX + 1); if (CanPut() == false){ m_blockX = (m_blockX - 1); } else { notify(TYPE_BOARD); }; } private function playGame(event:TimerEvent):void{ m_blockY++; if (!CanPut()){ m_blockY--; PutBlock(); generateNewBlock(); }; notify(TYPE_BOARD); } private function CanPut():Boolean{ var offset:int; var i:int; var j:int; j = 0; while (j < 4) { offset = (j * BLOCK_WIDTH); i = 0; while (i < 4) { if (m_block[(offset + i)] != 0){ if (((((((m_blockX + i) > (BOARD_WIDTH - 1))) || (((m_blockX + i) < 0)))) || (((m_blockY + j) > (BOARD_HEIGHT - 1))))){ return (false); }; if (m_board[((m_blockX + i) + ((m_blockY + j) * BOARD_WIDTH))] != 0){ return (false); }; }; i++; }; j++; }; return (true); } private function PutBlock():void{ var i:int; var j:int; j = 0; while (j < 4) { i = 0; while (i < 4) { if (m_block[(i + (j * BLOCK_WIDTH))] != 0){ m_board[((m_blockX + i) + ((m_blockY + j) * BOARD_WIDTH))] = m_block[(i + (j * BLOCK_WIDTH))]; }; i++; }; j++; }; DeleteRow(); } public function get nextBlock():int{ return (m_nextBlock); } private function DrawBoard():Array{ var arr:Array; var offsetBoard:int; var offsetBlock:int; var i:int; var j:int; var tile:int; arr = []; for each (tile in m_board) { arr.push(tile); }; j = 0; while (j < BLOCK_HEIGHT) { offsetBoard = ((j + m_blockY) * BOARD_WIDTH); offsetBlock = (j * BLOCK_WIDTH); i = 0; while (i < BLOCK_WIDTH) { if (m_block[(offsetBlock + i)] > 0){ arr[((offsetBoard + i) + m_blockX)] = m_block[(offsetBlock + i)]; }; i++; }; j++; }; return (arr); } public function moveBlockLeft():void{ if (m_state != STATE_PLAY){ return; }; m_blockX = (m_blockX - 1); if (CanPut() == false){ m_blockX = (m_blockX + 1); } else { notify(TYPE_BOARD); }; } public function get board():Array{ return (DrawBoard()); } private function generateNewBlock():void{ m_block = this.generateBlock(m_nextBlock); m_curBlock = m_nextBlock; m_nextBlock = Math.floor((Math.random() * 7)); notify(TYPE_NEXTBLOCK); m_blockX = 3; m_blockY = 0; if (CanPut() == false){ GameOver(); }; } public function endGame():void{ var indx:int; if (m_state != STATE_IDLE){ while (indx < m_board.length) { m_board[indx] = 0; indx++; }; m_time.removeEventListener(TimerEvent.TIMER, playGame); m_time.stop(); m_time = null; m_state = STATE_IDLE; notify(TYPE_BOARD); }; } public function rotateBlock():void{ if (m_state != STATE_PLAY){ return; }; var old_block:int = m_curBlock; m_curBlock = (m_curBlock + 16); if (m_curBlock > 54){ m_curBlock = (m_curBlock & 15); }; m_block = generateBlock(m_curBlock); if (CanPut() == false){ m_curBlock = old_block; m_block = generateBlock(m_curBlock); } else { notify(TYPE_BOARD); }; } } }//package tetris_game
Section 22
//TetrisBoard (tetris_game.TetrisBoard) package tetris_game { import flash.events.*; import flash.display.*; import flash.geom.*; public class TetrisBoard extends Sprite implements IObserver { private var m_numColumns:int; private var m_rowsToDelete:Array; private var m_board:MovieClip; private var m_tetris:Tetris; private var m_numRows:int; private var m_overlaySprites:Array; private var m_tiles:Array; private var m_overlay:Sprite; public function TetrisBoard(){ super(); } public function rowsDeleted(arr:Array):void{ var row:int; var ypos:Number; var col:int; var xpos:Number; trace(("rows deleted: " + arr)); while (arr.length > 0) { row = arr.shift(); ypos = (m_tiles[(row * m_numColumns)] as Sprite).y; col = 0; while (col < m_numColumns) { xpos = (m_tiles[((row * m_numColumns) + col)] as Sprite).x; addSymbolToOverlay(new A_ExplodingBlock(), xpos, ypos); col++; }; }; } private function createBoard():void{ var tile:MovieClip; var xOffset:Number; var yOffset:Number; var xSpacing:Number; var ySpacing:Number; var row:int; var col:int; var rcBoard:Rectangle = m_board.getBounds(m_board.parent); var rcTile:Rectangle = new A_Tile().getBounds(null); xOffset = ((rcTile.width / 2) + rcBoard.left); yOffset = ((rcTile.height / 2) + rcBoard.top); xSpacing = ((rcBoard.width - rcTile.width) / m_numColumns); ySpacing = ((rcBoard.height - rcTile.height) / m_numRows); m_tiles = []; row = 0; while (row < m_numRows) { col = 0; while (col < m_numColumns) { tile = new A_Tile(); tile.gotoAndStop(0); addChild(tile); tile.x = (xOffset + (xSpacing * col)); tile.y = (yOffset + (ySpacing * row)); m_tiles.push(tile); col++; }; row++; }; m_overlay = new Sprite(); addChild(m_overlay); m_overlaySprites = []; } private function overlayAddedToStage(event:Event):void{ var mc:MovieClip = (event.target as MovieClip); mc.gotoAndPlay(2); } public function init(tetris:Tetris, image:MovieClip):void{ m_tetris = tetris; tetris.register(this); m_numColumns = tetris.width; m_numRows = tetris.height; m_board = image; m_board.parent.addChild(this); createBoard(); } public function update(type:uint):void{ switch (type){ case Tetris.TYPE_BOARD: boardChange(m_tetris.board); break; case Tetris.TYPE_ROWDELETE: rowsDeleted(m_tetris.deletedRows); break; }; } private function overlayEnterFrame(event:Event):void{ var mc:MovieClip = (event.target as MovieClip); if (mc.currentFrame == mc.totalFrames){ mc.removeEventListener(Event.ADDED_TO_STAGE, overlayAddedToStage); mc.removeEventListener(Event.ENTER_FRAME, overlayEnterFrame); mc.parent.removeChild(mc); }; } public function boardChange(board:Array):void{ var idx:int; if (m_tiles == null){ return; }; idx = 0; while (idx < m_tiles.length) { (m_tiles[idx] as MovieClip).gotoAndStop((board[idx] + 1)); idx++; }; } private function addSymbolToOverlay(mc:MovieClip, xpos:Number, ypos:Number):void{ mc.addEventListener(Event.ADDED_TO_STAGE, overlayAddedToStage); mc.addEventListener(Event.ENTER_FRAME, overlayEnterFrame); m_overlay.addChild(mc); mc.x = xpos; mc.y = ypos; } } }//package tetris_game
Section 23
//TetrisLevel (tetris_game.TetrisLevel) package tetris_game { import flash.display.*; import flash.text.*; public class TetrisLevel implements IObserver { private var m_symbol:MovieClip; private var m_tetris:Tetris; private var m_text:TextField; public function TetrisLevel(){ super(); } public function init(tetris:Tetris, symbol:MovieClip):void{ var i:int; m_tetris = tetris; m_symbol = symbol; m_tetris.register(this); while (i < m_symbol.numChildren) { if ((m_symbol.getChildAt(i) is TextField)){ m_text = (m_symbol.getChildAt(i) as TextField); m_text.text = "1"; break; }; i++; }; } public function update(type:uint):void{ if ((Tetris.TYPE_LEVEL & type) != 0){ trace(("new level " + m_tetris.level)); m_text.text = m_tetris.level.toString(); }; } } }//package tetris_game
Section 24
//TetrisNextBlock (tetris_game.TetrisNextBlock) package tetris_game { import flash.display.*; public class TetrisNextBlock implements IObserver { public var m_symbol:MovieClip; public var m_tetres:Tetris; public function TetrisNextBlock(){ super(); } public function init(tetris:Tetris, symbol:MovieClip):void{ m_tetres = tetris; m_symbol = symbol; m_tetres.register(this); m_symbol.gotoAndStop(1); } public function update(type:uint):void{ if ((type & Tetris.TYPE_NEXTBLOCK) > 0){ m_symbol.gotoAndStop((m_tetres.nextBlock + 1)); }; } } }//package tetris_game
Section 25
//TetrisReward (tetris_game.TetrisReward) package tetris_game { import flash.events.*; import flash.display.*; import flash.geom.*; public class TetrisReward implements IObserver { private var m_spriteArray:Array; private var SYM_NEWLEVEL:int;// = 2 private var m_playing:Boolean; private var SYM_GAMEOVER:int;// = 4 private var SYM_GOODJOB:int;// = 1 private var m_symbol:MovieClip; private var m_tetris:Tetris; private var m_symbolDB:Object; private var m_level:int; private var m_scene:MovieClip; public function TetrisReward(){ super(); } public function update(type:uint):void{ if ((type & Tetris.TYPE_GAMEOVER) != 0){ m_spriteArray.push(createSprite(SYM_GAMEOVER)); m_level = 0; }; if ((type & Tetris.TYPE_ROWDELETE) != 0){ m_spriteArray.push(createSprite(SYM_GOODJOB)); }; if (((!(((type & Tetris.TYPE_LEVEL) == 0))) && (!((m_level == m_tetris.level))))){ m_level = m_tetris.level; m_spriteArray.push(createSprite(SYM_NEWLEVEL)); }; if (((!(m_playing)) && ((m_spriteArray.length > 0)))){ m_scene.addChild(m_spriteArray.shift()); }; } private function createSprite(symbol:int):MovieClip{ var sprite:MovieClip = new (m_symbolDB[symbol]); var rect:Rectangle = sprite.getBounds(sprite); sprite.x = (((m_scene.width - sprite.width) / 2) + (sprite.x - rect.left)); sprite.y = (((m_scene.height - sprite.height) / 2) + (sprite.y - rect.top)); sprite.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); sprite.addEventListener(Event.ENTER_FRAME, onEnterFrame); return (sprite); } private function onAddedToStage(event:Event):void{ var mc:MovieClip = (event.target as MovieClip); mc.gotoAndPlay(2); m_playing = true; } private function onEnterFrame(event:Event):void{ var parent:Sprite; var mc:MovieClip = (event.target as MovieClip); if (mc.currentFrame == (mc.totalFrames - 1)){ mc.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); mc.removeEventListener(Event.ENTER_FRAME, onEnterFrame); parent = (mc.parent as Sprite); if (parent != null){ mc.parent.removeChild(mc); }; if ((((m_spriteArray.length > 0)) && (!((parent == null))))){ parent.addChild(m_spriteArray.shift()); } else { m_playing = false; }; }; } public function init(tetris:Tetris, scene:MovieClip):void{ m_tetris = tetris; m_tetris.register(this); m_level = 0; m_scene = scene; m_spriteArray = []; m_symbolDB = {}; m_symbolDB[SYM_GOODJOB] = A_GoodJob; m_symbolDB[SYM_NEWLEVEL] = A_NewLevel; m_symbolDB[SYM_GAMEOVER] = A_GameOver; } } }//package tetris_game
Section 26
//TetrisScore (tetris_game.TetrisScore) package tetris_game { import flash.display.*; import flash.text.*; public class TetrisScore implements IObserver { private var m_symbol:MovieClip; private var m_tetris:Tetris; private var m_text:TextField; public function TetrisScore(){ super(); } public function init(teteis:Tetris, symbol:MovieClip):void{ var i:int; m_tetris = teteis; m_symbol = symbol; m_tetris.register(this); while (i < m_symbol.numChildren) { if ((m_symbol.getChildAt(i) is TextField)){ m_text = (m_symbol.getChildAt(i) as TextField); m_text.text = "0"; break; }; i++; }; } public function update(type:uint):void{ if ((Tetris.TYPE_SCORE & type) != 0){ trace(("new score " + m_tetris.score)); m_text.text = m_tetris.score.toString(); }; } } }//package tetris_game
Section 27
//A_ExplodingBlock (A_ExplodingBlock) package { import flash.display.*; public dynamic class A_ExplodingBlock extends MovieClip { public function A_ExplodingBlock(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 28
//A_GalleryPage (A_GalleryPage) package { import flash.display.*; public dynamic class A_GalleryPage extends MovieClip { public var btn_exit:SimpleButton; public var btn_prev:SimpleButton; public var image_4:MovieClip; public var image_8:MovieClip; public var image_2:MovieClip; public var image_5:MovieClip; public var image_6:MovieClip; public var image_7:MovieClip; public var image_9:MovieClip; public var image_3:MovieClip; public var image_10:MovieClip; public var image_11:MovieClip; public var detail_sprite:MovieClip; public var image_12:MovieClip; public var image_1:MovieClip; public var btn_back:SimpleButton; public var btn_next:SimpleButton; public function A_GalleryPage(){ addFrameScript(1, frame2, 5, frame6); } function frame6(){ stop(); } function frame2(){ stop(); } } }//package
Section 29
//A_GameMusic (A_GameMusic) package { import flash.media.*; public dynamic class A_GameMusic extends Sound { } }//package
Section 30
//A_GameOver (A_GameOver) package { import flash.display.*; public dynamic class A_GameOver extends MovieClip { public function A_GameOver(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 31
//A_GameOverPage (A_GameOverPage) package { import flash.display.*; public dynamic class A_GameOverPage extends MovieClip { public function A_GameOverPage(){ addFrameScript(2, frame3, 3, frame4); } function frame3(){ stop(); } function frame4(){ stop(); } } }//package
Section 32
//A_GamePage (A_GamePage) package { import flash.display.*; public dynamic class A_GamePage extends MovieClip { public var id_tetrisboard:MovieClip; public var id_nextblock:MovieClip; public var id_score:MovieClip; public var id_level:MovieClip; public var id_background:MovieClip; public var id_doll:MovieClip; } }//package
Section 33
//A_GoodJob (A_GoodJob) package { import flash.display.*; public dynamic class A_GoodJob extends MovieClip { public function A_GoodJob(){ addFrameScript(0, frame1, 48, frame49); } function frame1(){ stop(); } function frame49(){ stop(); } } }//package
Section 34
//A_HelpPage (A_HelpPage) package { import flash.events.*; import flash.display.*; public dynamic class A_HelpPage extends MovieClip { public var btn_exit:SimpleButton; public var btn_credits:SimpleButton; public var btn_back:SimpleButton; public function A_HelpPage(){ addFrameScript(1, frame2, 2, frame3); } function frame3(){ stop(); btn_back.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ gotoAndPlay(1); }); } function frame2(){ stop(); btn_credits.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ gotoAndPlay(2); }); } } }//package
Section 35
//A_IntroPage (A_IntroPage) package { import flash.events.*; import flash.display.*; public dynamic class A_IntroPage extends MovieClip { public function A_IntroPage(){ addFrameScript(0, frame1, 130, frame131, 358, frame359); } function frame1(){ dispatchEvent(new Event("nonSkippable", true)); trace("dipatched nonSkippable"); } function frame359(){ stop(); dispatchEvent(new Event("animationEnd", true, true)); } function frame131(){ dispatchEvent(new Event("skippable", true)); trace("dipatched skippable"); } } }//package
Section 36
//A_LobbyPage (A_LobbyPage) package { import flash.display.*; public dynamic class A_LobbyPage extends MovieClip { public var btn_continue:SimpleButton; public var btn_new:SimpleButton; public var btn_help:SimpleButton; public var btn_gallery:SimpleButton; public var id_btnOptions:SimpleButton; public var id_btnHelp:SimpleButton; public var btn_options:SimpleButton; public var id_btnPlay:SimpleButton; public function A_LobbyPage(){ addFrameScript(23, frame24); } function frame24(){ stop(); } } }//package
Section 37
//A_MainLobbyMusic (A_MainLobbyMusic) package { import flash.media.*; public dynamic class A_MainLobbyMusic extends Sound { } }//package
Section 38
//A_NewLevel (A_NewLevel) package { import flash.display.*; public dynamic class A_NewLevel extends MovieClip { public function A_NewLevel(){ addFrameScript(0, frame1, 47, frame48); } function frame1(){ stop(); } function frame48(){ stop(); } } }//package
Section 39
//A_OptionsPage (A_OptionsPage) package { import flash.display.*; public dynamic class A_OptionsPage extends MovieClip { public var btn_screensizefullscreen:SimpleButton; public var btn_exit:SimpleButton; public var btn_screensizewindow:SimpleButton; public var btn_soundon:SimpleButton; public var btn_soundoff:SimpleButton; public var btn_qualitymedium:SimpleButton; public var btn_speednormal:SimpleButton; public var btn_speedeasy:SimpleButton; public var btn_speedhard:SimpleButton; public var btn_musicoff:SimpleButton; public var btn_qualityhigh:SimpleButton; public var btn_qualitylow:SimpleButton; public var btn_musicon:SimpleButton; } }//package
Section 40
//A_Radial (A_Radial) package { import flash.display.*; public dynamic class A_Radial extends MovieClip { } }//package
Section 41
//A_Tile (A_Tile) package { import flash.display.*; public dynamic class A_Tile extends MovieClip { public function A_Tile(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 42
//IObserver (IObserver) package { public interface IObserver { function update(:uint):void; } }//package
Section 43
//IState (IState) package { import flash.events.*; public interface IState { function OnMouseDown(:MouseEvent):void; function OnMouseUp(:MouseEvent):void; function OnMouseClick(:MouseEvent):void; function OnKeyDown(:KeyboardEvent):void; } }//package
Section 44
//ISubject (ISubject) package { public interface ISubject { function notify(:uint):void; function register(:IObserver):void; function unregister(:IObserver):void; } }//package
Section 45
//Main (Main) package { import flash.events.*; import tetris_game.*; import flash.display.*; import flash.media.*; import sounds.*; import doll.*; import options.*; import state.*; import flash.utils.*; import flash.geom.*; public class Main extends Sprite { private var m_lobbyMusic:SoundAmbient; private var m_gameMusic:SoundAmbient; private var m_gameOverMC:MovieClip; private var m_dollManager:DollManager; private var m_galleryMC:MovieClip; private var m_tetrisLevel:TetrisLevel; private var m_gameMC:MovieClip; private var m_gameSoundFx:SoundCollection; private var galleryNumberDollsUnlocked:int; private var m_lobbyMC:MovieClip; private var m_currentScene:Sprite; private var m_tetrisScore:TetrisScore; private var m_currentState:IState; private var m_tetris:Tetris; private var m_soundTransform:SoundTransform; private var m_introMC:MovieClip; private var m_dollPanel:DollPanel; private var m_soundVolume:Number; private var m_detailMC:MovieClip; private var m_tetrisReward:TetrisReward; private var m_optionsState:IState; private var galleryStages:Array; private var m_soundCollection:SoundCollection; private var galleryDolls:Array; private var m_optionsMC:MovieClip; private var galleryDollIcons:Array; private var galleryCurrentDollStage:int; private var m_lobbyState:IState; private var m_tetrisNextBlock:TetrisNextBlock; private var m_gameState:IState; private var m_helpState:IState; private var m_gameAmbients:SoundCollection; private var m_tetrisBoard:TetrisBoard; private var galleryCurrentDollTotalStages:Array; private var m_introState:IState; public var flagSkippable:Boolean;// = true private var m_helpMC:MovieClip; private var m_currSoundCollection:SoundCollection; private var galleryCurrentDoll:MovieClip; private var m_optionSound:CSliderControl; private var m_debugAlreadyPlayed:Boolean; private var m_musicVolume:Number; private var galleryInDetailScreen:Boolean; private var m_musicTransform:SoundTransform; private var m_optionMusic:CSliderControl; private var m_lobbySounds:SoundCollection; private var m_gameSounds:SoundCollection; private var m_galleryState:IState; private var m_gameOverState:IState; public static const STATE_GAME:String = "stateGame"; public static const STATE_GALLERY:String = "stateGallery"; public static const STATE_INTRO:String = "stateIntro"; public static const STATE_LOBBY:String = "stateLobby"; private static const s_dollXml:XML = <xml> <url_resource path="doll_demon.swf"> <doll_symbol id="doll_demon" symbol="A_doll"/> <symbol id="background" asset="A_background"/> </url_resource> </xml> ; public static const STATE_GAMEOVER:String = "stateGameOver"; public static const STATE_HELP:String = "stateHelp"; public static const STATE_OPTIONS:String = "stateOptions"; public function Main():void{ galleryDolls = []; galleryDollIcons = []; super(); if (stage){ init(); } else { addEventListener(Event.ADDED_TO_STAGE, init); }; } public function galleryNextImage():void{ galleryCurrentDollStage = (galleryCurrentDollStage + ((galleryCurrentDollStage)<(galleryCurrentDollTotalStages.length - 1)) ? 1 : 0); galleryCurrentDoll.gotoAndStop((galleryCurrentDollTotalStages[galleryCurrentDollStage] as FrameLabel).frame); } public function enterGameOverLose():void{ changePage(m_gameOverMC); m_gameOverMC.gotoAndStop("lose"); m_currentState = m_gameOverState; m_currSoundCollection.clear(); } private function init(e:Event=null):void{ var e = e; removeEventListener(Event.ADDED_TO_STAGE, init); m_dollManager = new DollManager(); m_dollManager.load(s_dollXml); m_dollManager.addEventListener(Event.COMPLETE, function (e:Event):void{ playIntro(); }); m_dollPanel = new DollPanel(); m_introMC = new A_IntroPage(); m_lobbyMC = new A_LobbyPage(); m_gameMC = new A_GamePage(); m_helpMC = new A_HelpPage(); m_optionsMC = new A_OptionsPage(); m_galleryMC = centerDisplayObject(new A_GalleryPage(), m_helpMC); m_gameOverMC = new A_GameOverPage(); m_introState = new CIntroState(this); m_lobbyState = new CLobbyState(this); m_gameState = new CGameState(this); m_helpState = new CHelpState(this); m_optionsState = new COptionsState(this); m_galleryState = new CGalleryState(this); m_gameOverState = new CGameOverState(this); initTetrisGame(); m_soundVolume = 0.5; m_soundTransform = new SoundTransform(m_soundVolume); m_musicVolume = 0.5; m_musicTransform = new SoundTransform(m_musicVolume); addEventListener(MouseEvent.CLICK, OnMouseClick); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.focus = this; addEventListener("gameOver", onGameOver); addEventListener("gameVictory", onGameVictory); addEventListener("nextDoll", onNextDoll); addEventListener("reward", onDollReward); var dummy:Sprite = new Sprite(); m_currentScene = dummy; addChild(dummy); m_lobbySounds = new SoundCollection("lobby"); m_lobbyMusic = new SoundAmbient("music", 0, new A_MainLobbyMusic(), m_musicTransform); m_lobbySounds.addChild(m_lobbyMusic); m_gameSounds = new SoundCollection("game"); m_gameMusic = new SoundAmbient("music", 0, new A_GameMusic(), null); m_gameAmbients = new SoundAmbCollection("ambients"); m_gameSoundFx = new SoundCollection("effects"); m_gameSounds.addChild(m_gameMusic); m_gameSounds.addChild(m_gameAmbients); m_gameSounds.addChild(m_gameSoundFx); m_soundCollection = new SoundCollection("root"); m_soundCollection.addChild(m_lobbySounds); m_soundCollection.addChild(m_gameSounds); m_currSoundCollection = new SoundCollection("dummy"); } public function enterGameOverWin():void{ changePage(m_gameOverMC); m_gameOverMC.gotoAndStop("win"); m_currentState = m_gameOverState; m_currSoundCollection.stop(); changeSoundCollection("lobby"); m_currSoundCollection.play("music"); } public function get tetris():Tetris{ return (m_tetris); } public function enterHelp():void{ changePage(m_helpMC); m_currentState = m_helpState; } public function changeSoundCollection(_collectionName:String):void{ if (m_currSoundCollection != null){ m_currSoundCollection.stop(); }; m_currSoundCollection = (m_soundCollection.getChildByName(_collectionName) as SoundCollection); } public function playGame():void{ changePage(m_gameMC); m_currentState = m_gameState; nextDoll(); } private function onMouseUp(event:MouseEvent):void{ m_currentState.OnMouseUp(event); } private function OnMouseClick(event:MouseEvent):void{ m_currentState.OnMouseClick(event); } private function centerDisplayObject(_sprite, _target){ var targetRect:Rectangle = _target.getRect(_target); var spriteRect:Rectangle = _sprite.getRect(_target); _sprite.x = ((_sprite.x - spriteRect.left) + (targetRect.left + ((targetRect.width - spriteRect.width) / 2))); _sprite.y = ((_sprite.y - spriteRect.top) + (targetRect.top + ((targetRect.height - spriteRect.height) / 2))); return (_sprite); } public function enterGallery():void{ changePage(m_galleryMC); m_currentState = m_galleryState; galleryInit(); } private function changePage(scene:MovieClip):void{ removeChild(m_currentScene); m_currentScene = scene; stage.focus = scene; addChild(m_currentScene); if ((m_currentScene is MovieClip)){ (m_currentScene as MovieClip).gotoAndPlay(1); }; } private function onGameVictory(event:Event):void{ tetris.endGame(); m_currSoundCollection.getChildByName("effects").stop(); m_currSoundCollection.play("effects:victory"); galleryNumberDollsUnlocked++; galleryNumberDollsUnlocked = 1; } public function dollDemon():void{ var bkgrn:Sprite; m_dollPanel.init(m_dollManager.buildDoll("doll_demon"), m_gameMC["id_doll"]); m_tetris.unregister(m_dollPanel); m_tetris.register(m_dollPanel); if (galleryDollIcons[0] == null){ galleryDollIcons[0] = new (m_dollManager.getAsset("A_Icon")); galleryDolls[0] = m_dollManager.buildDoll("doll_demon"); m_gameMC["id_doll"]; }; if (((!((m_gameMC["id_background"] == null))) && (m_dollManager.getAsset("A_background")))){ bkgrn = m_gameMC["id_background"]; while (bkgrn.numChildren > 0) { bkgrn.removeChildAt(0); }; bkgrn.addChild(new (m_dollManager.getAsset("A_background"))); }; changeSoundCollection("game"); m_currSoundCollection.clear(); m_currSoundCollection.addChild(new SoundAmbient("music", 0, new (m_dollManager.getAsset("A_music")))); var randomAmbients:SoundRndCollection = new SoundRndCollection("ambient", 24000); randomAmbients.addChild(new SoundFx("1", new (m_dollManager.getAsset("A_taunt_1")))); randomAmbients.addChild(new SoundFx("2", new (m_dollManager.getAsset("A_taunt_2")))); randomAmbients.addChild(new SoundFx("3", new (m_dollManager.getAsset("A_taunt_3")))); randomAmbients.addChild(new SoundFx("4", new (m_dollManager.getAsset("A_taunt_4")))); randomAmbients.addChild(new SoundFx("5", new (m_dollManager.getAsset("A_taunt_5")))); randomAmbients.addChild(new SoundFx("6", new (m_dollManager.getAsset("A_taunt_6")))); randomAmbients.addChild(new SoundFx("7", new (m_dollManager.getAsset("A_taunt_7")))); m_currSoundCollection.addChild(randomAmbients); var effects:SoundCollection = new SoundCollection("effects"); effects.addChild(new SoundFx("victory", new (m_dollManager.getAsset("A_win")))); effects.addChild(new SoundFx("failure", new (m_dollManager.getAsset("A_fail")))); var rndRewards:SoundRndCollection = new SoundRndCollection("reward", 0); rndRewards.addChild(new SoundFx("1", new (m_dollManager.getAsset("A_reward_1")))); rndRewards.addChild(new SoundFx("2", new (m_dollManager.getAsset("A_reward_2")))); rndRewards.addChild(new SoundFx("3", new (m_dollManager.getAsset("A_reward_3")))); rndRewards.addChild(new SoundFx("4", new (m_dollManager.getAsset("A_reward_4")))); rndRewards.addChild(new SoundFx("5", new (m_dollManager.getAsset("A_reward_5")))); rndRewards.addChild(new SoundFx("6", new (m_dollManager.getAsset("A_reward_6")))); effects.addChild(rndRewards); m_currSoundCollection.addChild(effects); m_currSoundCollection.play("music"); m_currSoundCollection.play("ambient"); } public function galleryBack():void{ if (((!((galleryCurrentDoll == null))) && (!((galleryCurrentDoll.parent == null))))){ galleryCurrentDoll.parent.removeChild(galleryCurrentDoll); galleryCurrentDoll = null; }; m_galleryMC.gotoAndPlay("gallery_main"); galleryInit(); } public function gallerySelectDoll(num:int):void{ m_galleryMC.gotoAndStop("gallery_detail"); galleryDetailInit(galleryDolls[num]); } public function galleryInit():void{ var img:MovieClip; if (m_galleryMC.getChildByName("image_1") == null){ m_galleryMC.addEventListener(Event.ENTER_FRAME, function (event:Event):void{ if (m_galleryMC.getChildByName("image_1") != null){ event.currentTarget.removeEventListener(event.type, arguments.callee); galleryInit(); }; }); return; }; galleryCurrentDollTotalStages = []; var i = 1; while (i <= 12) { img = (m_galleryMC.getChildByName(("image_" + i)) as MovieClip); while ((img.getChildAt((img.numChildren - 1)) is MovieClip)) { img.removeChildAt((img.numChildren - 1)); }; i = (i + 1); }; var j:int; while (j < galleryNumberDollsUnlocked) { img = (m_galleryMC.getChildByName(("image_" + (j + 1))) as MovieClip); img.addChild(galleryDollIcons[j]); (galleryDollIcons[j] as MovieClip).name = ("image_" + (j + 1)); j = (j + 1); }; } public function get state():String{ var result:String = ""; switch (m_currentState){ case m_introState: result = _slot1.STATE_INTRO; break; case m_lobbyState: result = _slot1.STATE_LOBBY; break; case m_helpState: result = _slot1.STATE_HELP; break; case m_optionsState: result = _slot1.STATE_OPTIONS; break; case m_galleryState: result = _slot1.STATE_GALLERY; break; case m_gameState: result = _slot1.STATE_GAME; break; case m_gameOverState: result = _slot1.STATE_GAMEOVER; break; }; return (result); } public function playIntro():void{ var main:Main; main = this; m_introMC.addEventListener("animationEnd", function (event:Event):void{ event.currentTarget.removeEventListener(event.type, arguments.callee); if (main.state == _slot1.STATE_INTRO){ main.enterLobby(); }; }); m_introMC.addEventListener("nonSkippable", function (event:Event):void{ event.currentTarget.removeEventListener(event.type, arguments.callee); if (main.state == _slot1.STATE_INTRO){ main.flagSkippable = false; }; }); m_introMC.addEventListener("skippable", function (event:Event):void{ event.currentTarget.removeEventListener(event.type, arguments.callee); main.flagSkippable = true; }); changePage(m_introMC); m_currentState = m_introState; } private function onDollReward(event:Event):void{ var effects:ASoundComponent = m_currSoundCollection.getChildByName("effects"); effects.stop(); m_currSoundCollection.play("effects:reward"); } public function enterOptions():void{ changePage(m_optionsMC); m_currentState = m_optionsState; } private function OnMouseDown(event:MouseEvent):void{ m_currentState.OnMouseDown(event); } public function galleryPrevImage():void{ galleryCurrentDollStage = (galleryCurrentDollStage - ((galleryCurrentDollStage)>0) ? 1 : 0); galleryCurrentDoll.gotoAndStop((galleryCurrentDollTotalStages[galleryCurrentDollStage] as FrameLabel).frame); } private function onKeyDown(event:KeyboardEvent):void{ m_currentState.OnKeyDown(event); } private function initTetrisGame():void{ m_tetris = new Tetris(); m_tetrisBoard = new TetrisBoard(); m_tetrisBoard.init(m_tetris, m_gameMC["id_tetrisboard"]); m_tetrisNextBlock = new TetrisNextBlock(); m_tetrisNextBlock.init(m_tetris, m_gameMC["id_nextblock"]); m_tetrisScore = new TetrisScore(); m_tetrisScore.init(m_tetris, m_gameMC["id_score"]); m_tetrisLevel = new TetrisLevel(); m_tetrisLevel.init(m_tetris, m_gameMC["id_level"]); m_tetrisReward = new TetrisReward(); m_tetrisReward.init(m_tetris, m_gameMC); } private function onNextDoll(evt:Event):void{ this.nextDoll(); } public function nextDoll(_lvl:int=-1):void{ if (m_debugAlreadyPlayed){ enterGameOverWin(); return; }; m_debugAlreadyPlayed = true; dollDemon(); m_tetris.newGame(m_tetris.level, 1, m_tetris.score); } private function onGameOver(evt:Event):void{ var that:Main; var timer:Timer; var fn:Function; var evt = evt; m_currSoundCollection.play("effects:failure"); that = this; timer = new Timer(7000, 1); fn = function (evt:TimerEvent):void{ timer.removeEventListener(TimerEvent.TIMER_COMPLETE, fn); that.enterGameOverLose(); }; timer.addEventListener(TimerEvent.TIMER_COMPLETE, fn); timer.start(); } public function enterLobby():void{ m_debugAlreadyPlayed = false; if (state == _slot1.STATE_GAME){ m_currSoundCollection.clear(); }; if ((((((state == _slot1.STATE_INTRO)) || ((state == _slot1.STATE_GAME)))) || (_slot1.STATE_GAMEOVER))){ changeSoundCollection("lobby"); m_currSoundCollection.play("music"); }; changePage(m_lobbyMC); m_currentState = m_lobbyState; } public function galleryDetailInit(_doll:MovieClip):void{ var fl:FrameLabel; var rect_spr:Sprite; var refDoll:MovieClip; var _doll = _doll; if (m_galleryMC.getChildByName("detail_sprite") == null){ refDoll = _doll; m_galleryMC.addEventListener(Event.ENTER_FRAME, function (event:Event):void{ if (m_galleryMC.getChildByName("detail_sprite") != null){ event.currentTarget.removeEventListener(event.type, arguments.callee); galleryDetailInit(refDoll); }; }); return; }; if (((!((galleryCurrentDoll == null))) && (!((galleryCurrentDoll.parent == null))))){ galleryCurrentDoll.parent.removeChild(galleryCurrentDoll); galleryCurrentDoll = null; }; galleryCurrentDoll = _doll; galleryCurrentDollStage = 0; galleryCurrentDollTotalStages = []; for each (fl in galleryCurrentDoll.currentLabels) { if (fl.name.search("stage") != -1){ galleryCurrentDollTotalStages.push(fl); }; }; rect_spr = (m_galleryMC.getChildByName("detail_sprite") as Sprite); m_galleryMC.addChild(galleryCurrentDoll); centerDisplayObject(galleryCurrentDoll, rect_spr); galleryCurrentDoll.gotoAndPlay(galleryCurrentDollTotalStages[galleryCurrentDollStage]); } } }//package

Library Items

Symbol 1 BitmapUsed by:2
Symbol 2 GraphicUses:1Used by:19
Symbol 3 FontUsed by:4 5 7 8 10 11 13 14 16 17 70 71 96 97 98 99 100 101 102 103 104 106 107 109 110 112 113 115 116 118 119 121 122 124 125 127 128 130 131
Symbol 4 TextUses:3Used by:6
Symbol 5 TextUses:3Used by:6
Symbol 6 ButtonUses:4 5Used by:19
Symbol 7 TextUses:3Used by:9
Symbol 8 TextUses:3Used by:9
Symbol 9 ButtonUses:7 8Used by:19
Symbol 10 TextUses:3Used by:12
Symbol 11 TextUses:3Used by:12
Symbol 12 ButtonUses:10 11Used by:19
Symbol 13 TextUses:3Used by:15
Symbol 14 TextUses:3Used by:15
Symbol 15 ButtonUses:13 14Used by:19
Symbol 16 TextUses:3Used by:18
Symbol 17 TextUses:3Used by:18
Symbol 18 ButtonUses:16 17Used by:19
Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage]Uses:2 6 9 12 15 18
Symbol 20 Sound {A_MainLobbyMusic} [A_MainLobbyMusic]
Symbol 21 Sound {A_GameMusic} [A_GameMusic]
Symbol 22 FontUsed by:23 24 25 33 35 36 37 40 41 42
Symbol 23 TextUses:22Used by:49
Symbol 24 TextUses:22Used by:49
Symbol 25 TextUses:22Used by:49
Symbol 26 FontUsed by:27 28 31 32 46 47
Symbol 27 TextUses:26Used by:30
Symbol 28 TextUses:26Used by:30
Symbol 29 GraphicUsed by:30
Symbol 30 ButtonUses:27 28 29Used by:49
Symbol 31 TextUses:26Used by:34
Symbol 32 TextUses:26Used by:34
Symbol 33 TextUses:22Used by:34
Symbol 34 ButtonUses:31 32 33Used by:49
Symbol 35 TextUses:22Used by:49
Symbol 36 TextUses:22Used by:49
Symbol 37 TextUses:22Used by:49
Symbol 38 BitmapUsed by:39
Symbol 39 GraphicUses:38Used by:49
Symbol 40 TextUses:22Used by:49
Symbol 41 TextUses:22Used by:49
Symbol 42 TextUses:22Used by:49
Symbol 43 BitmapUsed by:45
Symbol 44 BitmapUsed by:45
Symbol 45 GraphicUses:43 44Used by:49
Symbol 46 TextUses:26Used by:48
Symbol 47 TextUses:26Used by:48
Symbol 48 ButtonUses:46 47Used by:49 82
Symbol 49 MovieClip {A_HelpPage} [A_HelpPage]Uses:23 24 25 30 34 35 36 37 39 40 41 42 45 48
Symbol 50 GraphicUsed by:51
Symbol 51 MovieClipUses:50Used by:65
Symbol 52 GraphicUsed by:53
Symbol 53 MovieClipUses:52Used by:65
Symbol 54 GraphicUsed by:57
Symbol 55 GraphicUsed by:57 139
Symbol 56 GraphicUsed by:57 139
Symbol 57 MovieClipUses:54 55 56Used by:65
Symbol 58 GraphicUsed by:62 64
Symbol 59 FontUsed by:60 61 63
Symbol 60 TextUses:59Used by:62
Symbol 61 EditableTextUses:59Used by:62 64
Symbol 62 MovieClip {assets_fla.Score_16} [assets_fla.Score_16]Uses:58 60 61Used by:65
Symbol 63 TextUses:59Used by:64
Symbol 64 MovieClip {assets_fla.Level_17} [assets_fla.Level_17]Uses:58 63 61Used by:65
Symbol 65 MovieClip {A_GamePage} [A_GamePage]Uses:51 53 57 62 64
Symbol 66 GraphicUsed by:82 94 136
Symbol 67 GraphicUsed by:82
Symbol 68 GraphicUsed by:69
Symbol 69 MovieClipUses:68Used by:82
Symbol 70 TextUses:3Used by:72
Symbol 71 TextUses:3Used by:72
Symbol 72 ButtonUses:70 71Used by:82 136
Symbol 73 GraphicUsed by:74
Symbol 74 MovieClipUses:73Used by:82
Symbol 75 FontUsed by:76 77 79 80
Symbol 76 TextUses:75Used by:78
Symbol 77 TextUses:75Used by:78
Symbol 78 ButtonUses:76 77Used by:82
Symbol 79 TextUses:75Used by:81
Symbol 80 TextUses:75Used by:81
Symbol 81 ButtonUses:79 80Used by:82
Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage]Uses:66 67 69 72 74 78 81 48
Symbol 83 BitmapUsed by:84
Symbol 84 GraphicUses:83Used by:87
Symbol 85 BitmapUsed by:86
Symbol 86 GraphicUses:85Used by:87
Symbol 87 MovieClip {A_GameOverPage} [A_GameOverPage]Uses:84 86
Symbol 88 BitmapUsed by:89
Symbol 89 GraphicUses:88Used by:94
Symbol 90 BitmapUsed by:91
Symbol 91 GraphicUses:90Used by:94
Symbol 92 BitmapUsed by:93
Symbol 93 GraphicUses:92Used by:94
Symbol 94 MovieClip {A_IntroPage} [A_IntroPage]Uses:66 89 91 93
Symbol 95 TextUsed by:136
Symbol 96 TextUses:3Used by:136
Symbol 97 TextUses:3Used by:136
Symbol 98 TextUses:3Used by:136
Symbol 99 TextUses:3Used by:136
Symbol 100 TextUses:3Used by:136
Symbol 101 TextUses:3Used by:136
Symbol 102 TextUses:3Used by:105
Symbol 103 TextUses:3Used by:105
Symbol 104 TextUses:3Used by:105
Symbol 105 ButtonUses:102 103 104Used by:136
Symbol 106 TextUses:3Used by:108
Symbol 107 TextUses:3Used by:108
Symbol 108 ButtonUses:106 107Used by:136
Symbol 109 TextUses:3Used by:111
Symbol 110 TextUses:3Used by:111
Symbol 111 ButtonUses:109 110Used by:136
Symbol 112 TextUses:3Used by:114
Symbol 113 TextUses:3Used by:114
Symbol 114 ButtonUses:112 113Used by:136
Symbol 115 TextUses:3Used by:117
Symbol 116 TextUses:3Used by:117
Symbol 117 ButtonUses:115 116Used by:136
Symbol 118 TextUses:3Used by:120
Symbol 119 TextUses:3Used by:120
Symbol 120 ButtonUses:118 119Used by:136
Symbol 121 TextUses:3Used by:123
Symbol 122 TextUses:3Used by:123
Symbol 123 ButtonUses:121 122Used by:136
Symbol 124 TextUses:3Used by:126
Symbol 125 TextUses:3Used by:126
Symbol 126 ButtonUses:124 125Used by:136
Symbol 127 TextUses:3Used by:129
Symbol 128 TextUses:3Used by:129
Symbol 129 ButtonUses:127 128Used by:136
Symbol 130 TextUses:3Used by:132
Symbol 131 TextUses:3Used by:132
Symbol 132 ButtonUses:130 131Used by:136
Symbol 133 BitmapUsed by:134
Symbol 134 GraphicUses:133Used by:135
Symbol 135 MovieClip {A_Radial} [A_Radial]Uses:134Used by:136
Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage]Uses:95 66 96 97 98 99 100 101 105 108 111 114 117 72 120 123 126 129 132 135
Symbol 137 GraphicUsed by:138
Symbol 138 MovieClip {A_ExplodingBlock} [A_ExplodingBlock]Uses:137
Symbol 139 MovieClip {A_Tile} [A_Tile]Uses:55 56
Symbol 140 FontUsed by:141 143 145
Symbol 141 TextUses:140Used by:142
Symbol 142 MovieClip {A_GoodJob} [A_GoodJob]Uses:141
Symbol 143 TextUses:140Used by:144
Symbol 144 MovieClip {A_NewLevel} [A_NewLevel]Uses:143
Symbol 145 TextUses:140Used by:146
Symbol 146 MovieClip {A_GameOver} [A_GameOver]Uses:145

Instance Names

"id_btnPlay"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 1Symbol 6 Button
"id_btnOptions"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 1Symbol 9 Button
"id_btnOptions"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 1Symbol 12 Button
"id_btnHelp"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 1Symbol 15 Button
"btn_continue"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 1Symbol 18 Button
"btn_new"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 24Symbol 6 Button
"btn_options"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 24Symbol 9 Button
"btn_gallery"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 24Symbol 12 Button
"btn_help"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 24Symbol 15 Button
"btn_continue"Symbol 19 MovieClip {A_LobbyPage} [A_LobbyPage] Frame 24Symbol 18 Button
"btn_exit"Symbol 49 MovieClip {A_HelpPage} [A_HelpPage] Frame 1Symbol 30 Button
"btn_credits"Symbol 49 MovieClip {A_HelpPage} [A_HelpPage] Frame 1Symbol 34 Button
"btn_back"Symbol 49 MovieClip {A_HelpPage} [A_HelpPage] Frame 3Symbol 48 Button
"id_text"Symbol 62 MovieClip {assets_fla.Score_16} [assets_fla.Score_16] Frame 1Symbol 61 EditableText
"id_text"Symbol 64 MovieClip {assets_fla.Level_17} [assets_fla.Level_17] Frame 1Symbol 61 EditableText
"id_background"Symbol 65 MovieClip {A_GamePage} [A_GamePage] Frame 1Symbol 51 MovieClip
"id_tetrisboard"Symbol 65 MovieClip {A_GamePage} [A_GamePage] Frame 1Symbol 53 MovieClip
"id_nextblock"Symbol 65 MovieClip {A_GamePage} [A_GamePage] Frame 1Symbol 57 MovieClip
"id_score"Symbol 65 MovieClip {A_GamePage} [A_GamePage] Frame 1Symbol 62 MovieClip {assets_fla.Score_16} [assets_fla.Score_16]
"id_level"Symbol 65 MovieClip {A_GamePage} [A_GamePage] Frame 1Symbol 64 MovieClip {assets_fla.Level_17} [assets_fla.Level_17]
"id_doll"Symbol 65 MovieClip {A_GamePage} [A_GamePage] Frame 1Symbol 53 MovieClip
"image_1"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_2"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_3"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_4"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_5"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_6"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_7"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_8"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_10"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_9"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_11"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"image_12"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 69 MovieClip
"btn_exit"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 1Symbol 72 Button
"detail_sprite"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 6Symbol 74 MovieClip
"btn_next"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 6Symbol 78 Button
"btn_prev"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 6Symbol 81 Button
"btn_back"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 6Symbol 48 Button
"btn_speedeasy"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 105 Button
"btn_speednormal"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 108 Button
"btn_speedhard"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 111 Button
"btn_musicon"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 114 Button
"btn_musicoff"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 117 Button
"btn_soundoff"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 117 Button
"btn_soundon"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 114 Button
"btn_exit"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 72 Button
"btn_screensizefullscreen"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 120 Button
"btn_screensizewindow"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 123 Button
"btn_qualitylow"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 126 Button
"btn_qualitymedium"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 129 Button
"btn_qualityhigh"Symbol 136 MovieClip {A_OptionsPage} [A_OptionsPage] Frame 1Symbol 132 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1459 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 19 as "A_LobbyPage"
ExportAssets (56)Timeline Frame 1Symbol 20 as "A_MainLobbyMusic"
ExportAssets (56)Timeline Frame 1Symbol 21 as "A_GameMusic"
ExportAssets (56)Timeline Frame 1Symbol 49 as "A_HelpPage"
ExportAssets (56)Timeline Frame 1Symbol 65 as "A_GamePage"
ExportAssets (56)Timeline Frame 1Symbol 82 as "A_GalleryPage"
ExportAssets (56)Timeline Frame 1Symbol 87 as "A_GameOverPage"
ExportAssets (56)Timeline Frame 1Symbol 94 as "A_IntroPage"
ExportAssets (56)Timeline Frame 1Symbol 136 as "A_OptionsPage"
ExportAssets (56)Timeline Frame 1Symbol 138 as "A_ExplodingBlock"
ExportAssets (56)Timeline Frame 1Symbol 139 as "A_Tile"
ExportAssets (56)Timeline Frame 1Symbol 64 as "assets_fla.Level_17"
ExportAssets (56)Timeline Frame 1Symbol 62 as "assets_fla.Score_16"
ExportAssets (56)Timeline Frame 1Symbol 142 as "A_GoodJob"
ExportAssets (56)Timeline Frame 1Symbol 144 as "A_NewLevel"
ExportAssets (56)Timeline Frame 1Symbol 146 as "A_GameOver"
ExportAssets (56)Timeline Frame 1Symbol 135 as "A_Radial"
EnableDebugger2 (64)Timeline Frame 131 bytes "u.$1$N4$.n0cx9x5Dimk3faE03hnf0."
DebugMX1 (63)Timeline Frame 1
SerialNumber (41)Timeline Frame 1

Labels

"Main"Frame 1
"gallery_main"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 2
"gallery_detail"Symbol 82 MovieClip {A_GalleryPage} [A_GalleryPage] Frame 6
"lose"Symbol 87 MovieClip {A_GameOverPage} [A_GameOverPage] Frame 1
"win"Symbol 87 MovieClip {A_GameOverPage} [A_GameOverPage] Frame 4




http://swfchan.com/18/89512/info.shtml
Created: 28/3 -2019 22:21:57 Last modified: 28/3 -2019 22:21:57 Server time: 26/04 -2024 16:42:23