flash on 2010-3-5 hiro_rec forked:0favorite:0lines:84license : MIT License modified : 2010-03-05 04:09:48 Embed Tweet package { import __AS3__.vec.Vector; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.filters.GlowFilter; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; [SWF(frameRate="48", backgroundColor="0x000000")] public class TextCircleDemo01 extends Sprite { private var text:String; private var textFieldList:Vector.<TextField>; private var container:Sprite; public function TextCircleDemo01() { initialize(); } private function initialize():void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; textFieldList = new Vector.<TextField>(); container = new Sprite(); addChild(container); text = "鳩山由紀夫首相は4日夕、米軍普天間飛行場(沖縄県宜野湾市)の移設問題について、首相官邸で記者団に「3月中のいずれかの時点には、政府の考えをまとめなければならない」と述べ、月内に移設案を絞り込む考えを明らかにした。"; text += "菅直人副総理兼財務相は4日の参院予算委員会で、財政運営について、「リーマンショックの状況の中では、財政出動を少なくとももう1年か何年かは維持する」と述べ、景気重視の予算編成を数年間は続ける方針を明らかにした。その上で、財政再建に関連し、「その後に向かって考える時に、国内総生産(GDP)に対する債務残高の比率は大きな指標になり得る」と指摘した。(時事通信)"; var i:int; var len:int = text.length; var char:String; var format:TextFormat = new TextFormat("_明朝", 12, 0xFFFFFF, true); var textField:TextField; var glow:GlowFilter = new GlowFilter(0x00FF00, 0.7, 3, 2, 2, 3); for (i = 0; i < len; i++) { char = text.charAt(i); textField = new TextField(); textField.defaultTextFormat = format; textField.autoSize = TextFieldAutoSize.CENTER; textField.text = text.charAt(i); textField.selectable = false; //textField.filters = [glow]; container.addChild(textField); textFieldList.push(textField); } textFieldList.reverse(); container.x = stage.stageWidth / 2; container.z = radius / 2 * -1; //container.y = -1500; addEventListener(Event.ENTER_FRAME, render); } private var radius:Number = 150; private var angle:Number = 1; private var speed:Number = 0.05; private function render(event:Event):void { var textField:TextField; var i:int; var len:int = text.length; var radian:Number; var _angle:Number; for (i = 0; i < len; i++) { _angle = (angle + i) * 8; radian = Math.PI / 180 * _angle; textField = textFieldList[i]; textField.x = Math.cos(radian) * radius; textField.z = Math.sin(radian) * radius * -1; textField.y = i * 4 + angle * 4 - 300; textField.rotationY = Math.atan2(textField.z * -1, textField.x) * 180 / Math.PI - 100; if (i == 0) { trace(textField.z) } textField.alpha = Math.sin(radian); textField.alpha = textField.alpha < 0.6 ? 0.6 : textField.alpha; } angle += speed; container.rotationX += (stage.mouseY - stage.stageHeight / 2 - container.rotationX) * 0.1; speed += ((stage.mouseX - stage.stageWidth / 2) * 0.001 - speed) * 0.5; } } } Code Fullscreen Preview Fullscreen alpha charAt GlowFilter reverse StageScaleMode.NO_SCALE TextFormat Math.atan2 align length trace Math.sin Math.PI push Math.cos text String Event.ENTER_FRAME Vector Event int