/* Code: Daniel Karso - warmwaterkruik@gmail.com Dancers: Ferry Rast & Gianni Fretes Audio Engineering: Gianni Fretes Art direction: Ferry Rast Video editing & camera: Maarten Krijnen Gebruik de code als je wil voor dingetjes. Als je vragen hebt of de hele source wil moet je maar even mailen naar Karso. */ package { import flash.display.MovieClip; import flash.text.*; import flash.events.*; import flash.display.SimpleButton; import fl.motion.easing.Bounce; import fl.motion.easing.Back; import flash.utils.Timer; import flash.events.TimerEvent; //TweenLite is lekker om te tweenen en Corona is eigen class om programmatisch extra coronas op te roepen. Coronas zijn ook lekker import gs.TweenLite; import Corona; public class GameScreen extends MovieClip { public var timerText:TextField = new TextField(); public var timerFormat:TextFormat = new TextFormat(); //elke seconde de timer aanroepen public var delayTimer:uint = 1000; //10 seconden voor de timer reserveren public var repeatTimer:uint = 10; //een ronde duurt 16 seconden public var rondeTimer:uint = 16000; //er zijn 4 rondes public var repeatRondes:uint = 4; //Dans gedoe tracking public var currentDanceP1:int; public var currentDanceP2:int; public var currentMusic:int; public var musicStarted:Boolean = false; public var pointsP1:int = 0; public var pointsP2:int = 0; //Corona flesjes placement public var corP1X:int = 455; public var corP1Offset:int = 0; public var corP1Y:int = 37; public var corP2X:int = 240; public var corP2Offset:int = 0; public var corP2Y:int = 37; //Constructor is gekoppeld aan de movieclip GameScreen public function GameScreen() { super(); startIntro(); } //Vrij sequentiele gang van functies aflopen. Eerst startIntro dan onFinishIntro dan startRonde enzovoorts private function startIntro():void { TweenLite.to(intro, 1, {alpha:1, ease:Bounce.easeOut}); TweenLite.to(intro, 1, {alpha:0, delay: 2, overwrite:false, ease:Back.easeIn, onComplete:onFinishIntro, onCompleteParams:[1, intro]}); setButtons(); GianniMC.gotoAndPlay("rest"); FerryMC.gotoAndPlay("rest"); } private function onFinishIntro(parameter1_num:Number, parameter2_mc:MovieClip):void { //trace("The tween has finished! parameters: " + parameter1_num + ", and " + parameter2_mc.name); //De bovenste parameters waren om te testen en hebben geen functie startRonde(); } //gameRonde is een timer van 17 seconden die 4 keer af gaat. 17 seconden omdat een dans 10 seconden is en overige tweens bij elkaar 4 tot 6 seconden. private function startRonde():void { var gameRonde:Timer = new Timer(rondeTimer, repeatRondes); gameRonde.start(); gameRonde.addEventListener(TimerEvent.TIMER, gameHandler); gameRonde.addEventListener(TimerEvent.TIMER_COMPLETE, gameComplete); setStage(); } //Deze functie roept hij steeds na 17 seconden. Hij reset de stage in feite weer private function gameHandler(e:TimerEvent):void { repeatRondes--; setStage(); //trace(pointsP1); //trace(pointsP2); //trace(repeatRondes); } //Wanneer de 4 rondes voorbij zijn zie je deze endMC private function gameComplete(e:TimerEvent):void { trace("GAME ENDED"); if(pointsP1 > pointsP2){ endMC.gotoAndPlay("elisha"); } if(pointsP1 < pointsP2){ endMC.gotoAndPlay("rachel"); } if(pointsP1 == pointsP2){ endMC.gotoAndPlay("draw"); } } //De hoofdgame. Hij kijkt eerst of hij niet bij ronde 0 is en als hij dat niet is start hij de muziek en de 10 seconden klok private function setStage():void { if(repeatRondes != 0){ var muziekStart:int = Math.random()*4; currentMusic = muziekStart; setText(); speelMusic(muziekStart); startTiming(); } else { trace("START WHORES"); } } private function setText():void { timerText.autoSize = TextFieldAutoSize.LEFT; timerFormat.font = "Rockwell"; timerFormat.color = 0xFFFF00; timerFormat.size = 21; timerFormat.underline = false; timerFormat.bold = true; timerText.setTextFormat(timerFormat); timerText.text = "Start dancing"; timerText.x = 400; timerText.y = 14; addChild(timerText); } private function setButtons():void { TweenLite.to(card1, 1, {alpha:1, y:513, ease:Bounce.easeOut}); TweenLite.to(ear1, 1, {alpha:1, delay:0.5, y:513, ease:Bounce.easeOut}); TweenLite.to(fish1, 1, {alpha:1, delay:1, y:513, ease:Bounce.easeOut}); TweenLite.to(robot1, 1, {alpha:1, delay:1.5, y:513, ease:Bounce.easeOut}); TweenLite.to(card2, 1, {alpha:1, y:513, ease:Bounce.easeOut}); TweenLite.to(ear2, 1, {alpha:1, delay:0.5, y:513, ease:Bounce.easeOut}); TweenLite.to(fish2, 1, {alpha:1, delay:1, y:513, ease:Bounce.easeOut}); TweenLite.to(robot2, 1, {alpha:1, delay:1.5, y:513, ease:Bounce.easeOut}); card1.addEventListener(MouseEvent.CLICK, handleClick); ear1.addEventListener(MouseEvent.CLICK, handleClick); fish1.addEventListener(MouseEvent.CLICK, handleClick); robot1.addEventListener(MouseEvent.CLICK, handleClick); card2.addEventListener(MouseEvent.CLICK, handleClick); ear2.addEventListener(MouseEvent.CLICK, handleClick); fish2.addEventListener(MouseEvent.CLICK, handleClick); robot2.addEventListener(MouseEvent.CLICK, handleClick); } private function handleClick(e:MouseEvent):void { var dance:String = e.target.name; switch(dance){ case "card1": FerryMC.gotoAndPlay("cardDance"); currentDanceP1 = 0; break; case "ear1": FerryMC.gotoAndPlay("earDance"); currentDanceP1 = 1; break; case "fish1": FerryMC.gotoAndPlay("fishDance"); currentDanceP1 = 2; break; case "robot1": FerryMC.gotoAndPlay("robotDance"); currentDanceP1 = 3; break; case "card2": GianniMC.gotoAndPlay("cardDance"); currentDanceP2 = 0; break; case "ear2": GianniMC.gotoAndPlay("earDance"); currentDanceP2 = 1; break; case "fish2": GianniMC.gotoAndPlay("fishDance"); currentDanceP2 = 2; break; case "robot2": GianniMC.gotoAndPlay("robotDance"); currentDanceP2 = 3; break; } } private function startTiming():void { timerText.text = ((delayTimer*repeatTimer)/ 1000) + " seconden gringo!"; timerText.setTextFormat(timerFormat); var gameTimer:Timer = new Timer(delayTimer, repeatTimer); gameTimer.start(); gameTimer.addEventListener(TimerEvent.TIMER, timerHandler); gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete); } private function timerHandler(e:TimerEvent):void{ repeatTimer--; timerText.text = ((delayTimer*repeatTimer) / 1000) + " seconden gringo!"; timerText.setTextFormat(timerFormat); } private function timerComplete(e:TimerEvent):void { timerText.text = "GEEN TIJD MEER GRINGO!"; timerText.setTextFormat(timerFormat); isProperDanceP1(); isProperDanceP2(); musicStarted = false; trace("huidige muziek:"+currentMusic+" huidige dans player1:"+currentDanceP1); trace("huidige muziek:"+currentMusic+" huidige dans player2:"+currentDanceP2); } private function speelMusic(m:int):void { switch(m){ case 0: muziekjes.gotoAndPlay("earSound"); break; case 1: muziekjes.gotoAndPlay("cardSound"); break; case 2: muziekjes.gotoAndPlay("fishSound"); break; case 3: muziekjes.gotoAndPlay("robotSound"); break; } musicStarted = true; } private function isProperDanceP1():void { if(currentMusic == currentDanceP1){ TweenLite.to(winnerP1, 1, {alpha:1, y:190, ease:Bounce.easeOut}); TweenLite.to(winnerP1, 1, {y:-260, delay:2, overwrite:false, ease:Back.easeIn, onComplete:finishSet, onCompleteParams:["win", "p1"]}); pointsP1++; var corona:Corona = new Corona(); corona.width = 103; corona.height = 156; corona.x = 870; corona.y = corP1Y; addChild(corona); TweenLite.to(corona, 1, {x:corP1X+corP1Offset, rotation:360, ease:Bounce.easeOut}); corP1Offset += 40; } else { TweenLite.to(loserP1, 1, {alpha:1, y:190, ease:Bounce.easeOut}); TweenLite.to(loserP1, 1, {y:667, delay:2, overwrite:false, ease:Back.easeIn, onComplete:finishSet, onCompleteParams:["lose", "p1"]}); } } private function isProperDanceP2():void { if(currentMusic == currentDanceP2){ TweenLite.to(winnerP2, 1, {alpha:1, y:190, ease:Bounce.easeOut}); TweenLite.to(winnerP2, 1, {y:-260, delay:2, overwrite:false, ease:Back.easeIn, onComplete:finishSet, onCompleteParams:["win", "p2"]}); pointsP2++; var corona2:Corona = new Corona(); corona2.width = 103; corona2.height = 156; corona2.x = -50; corona2.y = corP2Y; addChild(corona2); TweenLite.to(corona2, 1, {x:corP2X+corP2Offset, rotation:360, ease:Bounce.easeOut}); corP2Offset -= 40; } else { TweenLite.to(loserP2, 1, {alpha:1, y:190, ease:Bounce.easeOut}); TweenLite.to(loserP2, 1, {y:667, delay:2, overwrite:false, ease:Back.easeIn, onComplete:finishSet, onCompleteParams:["lose", "p2"]}); } } private function finishSet(what:String, who:String){ delayTimer = 1000; repeatTimer = 10; GianniMC.gotoAndPlay("rest"); FerryMC.gotoAndPlay("rest"); } } //end class } //end package