Created
August 11, 2015 15:48
-
-
Save ek/0dac86393f00b1e6e885 to your computer and use it in GitHub Desktop.
EdgemoorIntro.as - Actionscript 3 - Animation code for Edgemoor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package wolken.edgemoor { | |
import flash.events.Event; | |
import flash.events.EventDispatcher; | |
import flash.display.MovieClip; | |
import flash.text.TextField; | |
import flash.text.TextFormat; | |
import fl.transitions.Tween; | |
import fl.transitions.TweenEvent; | |
import fl.transitions.easing.*; | |
import flash.utils.Timer; | |
import flash.events.TimerEvent; | |
import caurina.transitions.*; | |
public class EdgemoorIntro extends EventDispatcher { | |
public var status:String = "not_started"; | |
private var _config:EdgemoorConfig; | |
private var _loader:EdgemoorLoader; | |
private var _document:MovieClip; | |
private var _status = false; | |
public var currentIndex; | |
public var nextStep:String = ""; | |
public var delayTime:int = 2; | |
private var angleTL:MovieClip; | |
private var angleTR:MovieClip; | |
private var angleBL:MovieClip; | |
private var angleBR:MovieClip; | |
private var imageClip:MovieClip; | |
private var _texto:TextField; | |
private var _textFormat:TextFormat; | |
private var cropClip:MovieClip; | |
public var images:Array; | |
private var introTimer:Timer; | |
public function EdgemoorIntro( config, loader, document ) { | |
_loader = loader; | |
_config = config; | |
_document = document; | |
_status = "not_started"; | |
_document.centertext_mc.alpha = 0; | |
_texto = _document.centertext_mc.text_txt; | |
_textFormat = _texto.getTextFormat(); | |
angleTL = _document.angleTL; | |
angleTR = _document.angleTR; | |
angleBL = _document.angleBL; | |
angleBR = _document.angleBR; | |
imageClip = _document.image_mc; | |
images = new Array(); | |
cropClip = _document.crop_mc; | |
_loader.addEventListener( Event.CHANGE, checkLoader ); | |
} | |
private function checkLoader(event:Event):void { | |
if(_loader.status == "intro" && _status == "not_started") { | |
currentIndex = 0; | |
playFrame( currentIndex ); | |
} | |
} | |
private function playNextFrame():void { | |
currentIndex ++; | |
if(currentIndex < _config.introFrames.length) { | |
playFrame( currentIndex ); | |
} else { | |
status = "done"; | |
lastFrame(); | |
dispatchEvent( new Event(Event.COMPLETE) ); | |
} | |
} | |
private function playFrame( frameNumber:int ):void { | |
nextStep = "showimage"; | |
takeNextStep(); | |
} | |
private function takeNextStep():void { | |
trace( nextStep ); | |
switch( nextStep ) { | |
case "showimage": | |
delayTime = 0; | |
showImage(currentIndex); | |
nextStep = "hideimage"; | |
break; | |
case "hideimage": | |
delayTime = _config.delayTime; | |
hideImage(currentIndex); | |
nextStep = "showtext"; | |
break; | |
case "showtext": | |
delayTime = 0; | |
showText(currentIndex); | |
nextStep = "hidetext"; | |
break; | |
case "hidetext": | |
delayTime = _config.delayTime; | |
hideText(currentIndex); | |
nextStep = "nextframe"; | |
break; | |
case "nextframe": | |
playNextFrame(); | |
break; | |
} | |
} | |
private function showImage( imageNumber:int ):void { | |
cropClip.scaleX = .25; | |
cropClip.scaleY = .25; | |
var newImage = imageClip.addChild( _loader.images[currentIndex].sprite ); | |
newImage.alpha = 0; | |
Tweener.addTween(newImage, {alpha:1,time:.5, transition:"easeoutExpo", onComplete: takeNextStep, delay: delayTime }); | |
images.push( newImage ); | |
Tweener.addTween( cropClip, { scaleX: 1, scaleY: 1, time: .5, transition:"easeoutExpo", delay: delayTime }); | |
} | |
private function hideImage( imageNumber:int ):void { | |
var targetImage = images[ imageNumber ]; | |
Tweener.addTween(targetImage, {alpha:0,time:.5, transition:"easeoutExpo", onStart: takeNextStep, delay: delayTime }); | |
Tweener.addTween( cropClip, { scaleX: .5, scaleY: .25, time: .5, transition:"easeoutExpo", delay: delayTime }); | |
} | |
private function showText( textNumber:int ):void { | |
var textValue = _config.introFrames[textNumber]['text']; | |
_texto.text = textValue; | |
_texto.setTextFormat( _textFormat ); | |
Tweener.addTween( _document.centertext_mc, { alpha: 1, time:.5, onComplete: takeNextStep, delay: delayTime } ); | |
moveAnglesIn(); | |
} | |
private function hideText( textNumber:int ):void { | |
Tweener.addTween( _document.centertext_mc, { alpha: 0, time:.5, onStart: takeNextStep, delay: delayTime } ); | |
moveAnglesOut(); | |
} | |
private function moveAnglesIn() { | |
Tweener.addTween(angleTL, {x:135, y:125,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
Tweener.addTween(angleTR, {x:395, y:125,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
Tweener.addTween(angleBR, {x:395, y:225,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
Tweener.addTween(angleBL, {x:135, y:225,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
} | |
private function moveAnglesOut() { | |
Tweener.addTween(angleTL, {x:-10, y:-10,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
Tweener.addTween(angleTR, {x:540, y:-10,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
Tweener.addTween(angleBR, {x:540, y:360,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
Tweener.addTween(angleBL, {x:-10, y:360,time:.5, transition:"easeoutExpo", delay: delayTime}); | |
} | |
private function lastFrame() { | |
cropClip.scaleX = .25; | |
cropClip.scaleY = .25; | |
var targetImage = images[0]; | |
targetImage.alpha = 0; | |
Tweener.addTween(targetImage, {alpha:1,time:.5, transition:"easeoutExpo" }); | |
Tweener.addTween( cropClip, { scaleX: 1, scaleY: 1, time: .5, transition:"easeoutExpo"}); | |
moveAnglesOut(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment