Forked from: teageek's Textを球状に配置するだけ diff:11 forked from: Textを球状に配置するだけ hacker_ciaxk.. forked:2favorite:0lines:93license : MIT License modified : 2009-12-06 03:19:11 Embed Tweet package { import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; import flash.geom.Matrix3D; import flash.text.*; import flash.events.*; import caurina.transitions.Tweener; [SWF(width="465", height="465", backgroundColor="0xFFFFFF", frameRate="40")] public class SpriteSphere extends Sprite { private var container:Sprite; private var planeN:Number; private const planeW:Number=50; private const planeH:Number=50; private const radius:Number=150; private const s:String="走错的路 QQ5007928 走错的路 QQ5007928 "; public function SpriteSphere() { container=new Sprite(); container.x=465 / 2; container.y=465 / 2; addChild(container); planeN=0; var H:int=(2 * radius * Math.PI) / 2 / planeH; var theta1:Number; var theta2:Number=90; var c:int = 0; stage.addEventListener(MouseEvent.CLICK, function():void{ var deleteNum:uint = container.numChildren; trace(deleteNum); for (var i:int = 0; i < deleteNum; i++) {var child:* = container.getChildAt(i); Tweener.addTween(child,{ x: Math.floor(Math.random() * 301) - 150, z: Math.floor(Math.random() * 301) - 150, y: Math.floor(Math.random() * 301) - 150, time:3, transition:"easeinquad"}); //Tweener.addTween(child,{delay:5,onComplete:function():void{ //container.removeChild(this);}}); } }); for(var i:int=0; i < H; i++) { theta1=0; var pn:int=Math.floor((2 * radius * Math.cos(theta2 * Math.PI / 180) * Math.PI) / planeW); for(var j:int=0; j < pn; j++) { var tf:TextField = new TextField(); tf.defaultTextFormat = new TextFormat("typeWriter_",30, 0x0); tf.text =s.charAt(c++); if(c>25)c=0; tf.autoSize = TextFieldAutoSize.LEFT; tf.x=-25; tf.y=-25; tf.textColor= 0xffffff*Math.random(); tf.selectable=false; var sp:Sprite=new Sprite; //sp.graphics.beginFill(Math.random() * 0xffffff, 0.7); //sp.graphics.drawEllipse(-planeW / 2, -planeH / 2, planeW, planeH); //sp.graphics.endFill(); sp.addChild(tf); sp.rotationX=-theta2; sp.rotationY=theta1; sp.x=radius * Math.cos(theta2 * Math.PI / 180) * Math.sin(theta1 * Math.PI / 180); sp.y=radius * Math.sin(theta2 * Math.PI / 180); sp.z=radius * Math.cos(theta2 * Math.PI / 180) * Math.cos(theta1 * Math.PI / 180); theta1+=360 / pn; sp.name="sp" + planeN.toString(); container.addChild(sp); planeN++; } theta2-=180 / H; } addEventListener(Event.ENTER_FRAME, onFrame); } private function onFrame(e:Event):void { container.rotationY++; var array:Array=[]; for(i=0; i < planeN; i++) { var sp:Sprite=container.getChildByName("sp" + i.toString())as Sprite; var mat:Matrix3D=sp.transform.getRelativeMatrix3D(this); array.push({sp:sp, z:mat.position.z}); } array.sortOn("z", Array.NUMERIC | Array.DESCENDING); for(var i:int=0; i < planeN; i++) { var sp:Sprite=array[i].sp as Sprite; container.setChildIndex(sp, i); var b:Number=(array[i].z as Number) / 14; sp.filters=(b > 4) ? [new BlurFilter(b, b, 3)] : []; } } } } Code Fullscreen Preview Fullscreen Math.PI Math.floor child Math.cos setChildIndex getChildByName getChildAt rotationX Array.DESCENDING numChildren rotationY sortOn Array.NUMERIC filters selectable charAt textColor toString Matrix3D MouseEvent.CLICK sort new page view favorite forked pv258 forked from: forked from: Text.. hacker_p0k1yuqh forked:0 favorite:0lines:93 (diff:2) pv343 forked from: forked from: Text.. hacker_ciaxk5up forked:0 favorite:2lines:93 (diff:2) pv0 forked from: forked from: Text.. hacker_uf3r2mgu forked:0 favorite:0lines:93 (diff:1)