// forked from SUPERMARKET's forked from: forked from: 四方向からのテキストアニメーション // forked from nayu's forked from: 四方向からのテキストアニメーション // forked from yanbaka's 四方向からのテキストアニメーション // 四方向から来るテキストアニメーション // 参考→http://citizen.jp/arakigallery/ package { import caurina.transitions.Tweener; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Point; import flash.text.TextField; import flash.text.TextFieldAutoSize; [SWF(width = "465", height = "465", backgroundColor = "0xFFFFFF", frameRate = "30")] public class EveryDirectionT extends Sprite { private const txt:String = "Hi, I'm Josh Ellington, a web designer and developer based in Portland, Oregon. I'm currently available for hire. Direct all inquiries to hello@joshellington.com. Check out my blog to see what I've been up to."; private const tran:String = "easeOutElastic"; private var tfList:Array = []; private var margin:Point = new Point(100, 200); private var cnt:uint; private var xpos:Number = 0; private var xposList:Array = []; public function EveryDirectionT():void { setText(); setPoint(); addEventListener(Event.ENTER_FRAME, onEnterHandler); stage.addEventListener(MouseEvent.CLICK, restart); } private function restart(e:MouseEvent):void { setPoint(); addEventListener(Event.ENTER_FRAME, onEnterHandler); } private function setText():void { for (var i:uint=0; i<txt.length; i++) { var bmp:Bitmap = createText(txt.charAt(i)); addChild(bmp); tfList.push(bmp); } } private function setPoint():void { cnt = 0; xpos = 0; xposList = []; Tweener.removeAllTweens(); removeEventListener(Event.ENTER_FRAME, onEnterHandler); var point:Point; for each(var value:Bitmap in tfList) { point = getPoint(xpos); value.alpha = 0.0; value.x = point.x; value.y = point.y; xposList.push(xpos); xpos += value.width +4; // -4は文字間を詰める為 } } private function onEnterHandler(e:Event):void { if(cnt < tfList.length) { Tweener.addTween(tfList[cnt], {delay:cnt*0.05, alpha:1.0, x:xposList[cnt] + margin.x, y:margin.y, time:0.5, transition:tran}); } else { removeEventListener(Event.ENTER_FRAME, onEnterHandler); } cnt++; } private function getPoint(xpos:Number):Point { var rtn:Point; var random:uint = Math.random() * 4; switch (random) { case 0: rtn = new Point(0, margin.y); break; case 1: rtn = new Point(xpos + margin.x, 0); break; case 2: rtn = new Point(stage.stageWidth, margin.y); break; case 3: rtn = new Point(xpos + margin.x, stage.stageHeight); break; default: rtn = new Point(0, 0); break; } return rtn; } private function createText(value:String):Bitmap { var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = value; var bmd:BitmapData = new BitmapData(tf.width, tf.height, true, 0x000000); bmd.draw(tf); var bmp:Bitmap = new Bitmap(bmd); return bmp; } } } forked from: forked from: forked from: 四方向からのテキストアニメーション