bitetti

Untitled

May 2nd, 2012
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. package
  2. {
  3. import flash.display.BitmapData;
  4. import flash.display.Shape;
  5. import flash.display.Sprite;
  6. import flash.display.StageAlign;
  7. import flash.display.StageScaleMode;
  8. import flash.events.Event;
  9. import flash.geom.Matrix;
  10. import flash.geom.Matrix3D;
  11. import flash.geom.Point;
  12. import flash.geom.Vector3D;
  13. import flash.text.TextField;
  14.  
  15. /**
  16. * ...
  17. * @author @bitetti
  18. */
  19. public class Main extends Sprite
  20. {
  21.  
  22. public function Main():void
  23. {
  24. if (stage) init();
  25. else addEventListener(Event.ADDED_TO_STAGE, init);
  26. }
  27.  
  28. private var shp:Vector.<Shape>;
  29.  
  30. private var inf:TextField = new TextField;
  31.  
  32. private function init(e:Event = null):void
  33. {
  34. removeEventListener(Event.ADDED_TO_STAGE, init);
  35. // entry point
  36.  
  37. stage.align = StageAlign.TOP_LEFT;
  38. stage.scaleMode = StageScaleMode.NO_SCALE;
  39. this.x = stage.stageWidth / 2;
  40. this.y = stage.stageHeight / 2;
  41.  
  42. makePoint(0, 0, 0, 0x000000);
  43. inf.selectable = inf.mouseEnabled = false;
  44. inf.width = 300;
  45. inf.height = stage.stageHeight;
  46. inf.y = -this.y+8;
  47. inf.x = -this.x+8;
  48. addChild(inf);
  49.  
  50. var verbetes:Number = 20;
  51. var RAD:Number = Math.PI / 180;
  52. var SUP:Number = Math.PI * 4;
  53. var raiz:Number = Math.log(SUP) / Math.log(verbetes);
  54.  
  55. var x:Number, y:Number, z:Number;
  56. var angX:Number = 0;
  57. var angY:Number = 0;
  58. var pass:Number = raiz / RAD;
  59.  
  60. shp = new Vector.<Shape>(verbetes);
  61.  
  62. for (var i:int = 0; i < verbetes; i++)
  63. {
  64. var m:Matrix3D = new Matrix3D;
  65. m.appendTranslation(100, 0, 0);
  66. m.appendRotation(angX, Vector3D.Z_AXIS);
  67. m.appendRotation(angY, Vector3D.X_AXIS);
  68. var p:Vector3D = m.transformVector(new Vector3D(0, 0, 0));
  69.  
  70. var s:Shape = makePoint(p.x, p.y, p.z);
  71. shp[i]=s;
  72.  
  73. angX += pass;
  74. if (angX > 360)
  75. {
  76. angX = angX %= 360;
  77. angY += pass;
  78. }
  79. inf.appendText( angX.toString() + " " + angY.toString() +"\n" );
  80.  
  81. }
  82.  
  83.  
  84. addEventListener(Event.ENTER_FRAME, ani);
  85. }
  86.  
  87. private var rx:Number = 0;
  88. private var ry:Number = 0;
  89.  
  90. private function ani(e:Event):void
  91. {
  92. var verbetes:Number = 20;
  93. var RAD:Number = Math.PI / 180;
  94. var SUP:Number = Math.PI * 4;
  95. var raiz:Number = Math.log(SUP) / Math.log(verbetes);
  96.  
  97. var x:Number, y:Number, z:Number;
  98. var angX:Number = 0;
  99. var angY:Number = 0;
  100. var pass:Number = raiz / RAD;
  101.  
  102. for (var i:int = 0; i < verbetes; i++)
  103. {
  104. var m:Matrix3D = new Matrix3D;
  105. m.appendTranslation(100, 0, 0);
  106. m.appendRotation(angX+rx, Vector3D.Z_AXIS);
  107. m.appendRotation(angY+ry, Vector3D.Y_AXIS);
  108. var p:Vector3D = m.transformVector(new Vector3D(0, 0, 0));
  109.  
  110. shp[i].x = p.x;
  111. shp[i].y = p.y;
  112. shp[i].z = p.z;
  113.  
  114. angX += pass;
  115. if (angX > 360)
  116. {
  117. angX = angX %= 360;
  118. angY += pass;
  119. }
  120. }
  121.  
  122. rx += 5;
  123. ry += 3;
  124. }
  125.  
  126.  
  127. private var count:uint = 0;
  128.  
  129. private function makePoint(x:Number, y:Number, z:Number, cor:uint = 0xff0000):Shape
  130. {
  131. var s:Shape = new Shape;
  132. s.x = x;
  133. s.y = y;
  134. s.z = z;
  135.  
  136.  
  137. var t:TextField = new TextField;
  138. t.textColor = cor;
  139. t.text = count.toString();
  140. count++;
  141. var b:BitmapData = new BitmapData(t.width, t.height);
  142. b.draw(t);
  143. s.graphics.beginBitmapFill(b);
  144. s.graphics.drawRect( -b.width / 2, -b.height / 2, b.width, b.height);
  145. s.graphics.endFill();
  146. addChild(s);
  147.  
  148. return s;
  149. }
  150.  
  151. }
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment