/src/com/FullscreenStarryNight.as

https://github.com/socialvibe/engagements_FLAs · ActionScript · 166 lines · 104 code · 28 blank · 34 comment · 11 complexity · 14281c592c6c4230eb5be4e014e354f8 MD5 · raw file

  1. /*
  2. Twinkling Stars
  3. ver. 0.1
  4. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  5. Author: matt carpenter
  6. http://orangesplotch.com
  7. License: This code is released under the
  8. Creative Commons Attribution-ShareAlike 2.5 License
  9. http://creativecommons.org/licenses/by-sa/2.5/
  10. Dynamically generated constellations with full screen option.
  11. */
  12. package {
  13. import flash.display.DisplayObject;
  14. import flash.display.DisplayObjectContainer;
  15. import flash.display.Sprite;
  16. import flash.display.Stage;
  17. import flash.display.StageDisplayState;
  18. import flash.display.StageScaleMode;
  19. import flash.events.*;
  20. import flash.geom.Rectangle;
  21. import flash.system.Capabilities;
  22. [SWF(width="500", height="196", frameRate="24", backgroundColor="#FFFFFF")]
  23. public class FullscreenStarryNight extends Sprite
  24. {
  25. private var follower:Sprite;
  26. private var bg:Sprite;
  27. private var sky:DisplayObjectContainer;
  28. private var sh:Number;
  29. private var sw:Number;
  30. private var bigStars:Array;
  31. private var smallStars:Array;
  32. public function FullscreenStarryNight()
  33. {
  34. stage.scaleMode = StageScaleMode.NO_SCALE;
  35. sh = stage.stageHeight;
  36. sw = stage.stageWidth;
  37. // set up the background (black)
  38. bg = new Sprite();
  39. bg.graphics.beginFill(0);
  40. bg.graphics.drawRect(0, 0, sw, sh);
  41. addChild(bg);
  42. // now make the sky
  43. sky = new Sprite();
  44. addChild(sky);
  45. // create and render the stars
  46. MakeBigStars(500);
  47. MakeSmallStars(1000);
  48. DrawStars();
  49. // add the needed event listeners
  50. stage.addEventListener(MouseEvent.CLICK, FullScreenSwitch);
  51. stage.addEventListener(Event.FULLSCREEN, FullScreenHandler);
  52. }
  53. // Create an array of big stars
  54. private function MakeBigStars(numStars:Number):void {
  55. // create new stars
  56. bigStars = new Array(numStars);
  57. for (var i:Number = 0; i<numStars; ++i) {
  58. bigStars[i] = new Star();
  59. }
  60. }
  61. // Create an array of smaller stars
  62. private function MakeSmallStars(numStars:Number):void {
  63. // create new stars
  64. smallStars = new Array(numStars);
  65. for (var i:Number = 0; i<numStars; ++i) {
  66. smallStars[i] = new Star();
  67. smallStars[i].isbig = false;
  68. }
  69. }
  70. // Render the stars
  71. private function DrawStars():void {
  72. // first hide all stars being shown
  73. while(sky.numChildren) {
  74. sky.removeChildAt(0);
  75. }
  76. // redraw background
  77. sh = stage.stageHeight;
  78. sw = stage.stageWidth;
  79. bg.graphics.beginFill(0);
  80. bg.graphics.drawRect(0, 0, sw, sh);
  81. // Draw the stars
  82. var i:Number;
  83. var curStar:Star;
  84. if (StageDisplayState.FULL_SCREEN == stage.displayState) {
  85. // draw the big stars
  86. for (i=0; i<bigStars.length; ++i) {
  87. bigStars[i].x = bigStars[i].xval * sw;
  88. bigStars[i].y = bigStars[i].yval * sh;
  89. bigStars[i].graphics.clear();
  90. bigStars[i].graphics.beginFill(0xFFFFFF);
  91. bigStars[i].graphics.drawCircle(0, 0, (bigStars[i].size * 1.25 + 1.25) );
  92. sky.addChildAt(bigStars[i], i);
  93. }
  94. // draw the small stars
  95. for (i=0; i<smallStars.length; ++i) {
  96. smallStars[i].x = smallStars[i].xval * sw;
  97. smallStars[i].y = smallStars[i].yval * sh;
  98. smallStars[i].graphics.clear();
  99. smallStars[i].graphics.beginFill(0xFFFFFF);
  100. smallStars[i].graphics.drawCircle(0, 0, (smallStars[i].size * 1 + 0.25) );
  101. sky.addChildAt(smallStars[i], i);
  102. }
  103. }
  104. else {
  105. // draw only the big stars
  106. for (i=0; i<bigStars.length; ++i) {
  107. // curStar = bigStars[i];
  108. bigStars[i].x = bigStars[i].xval * sw;
  109. bigStars[i].y = bigStars[i].yval * sh;
  110. bigStars[i].graphics.clear();
  111. bigStars[i].graphics.beginFill(0xFFFFFF);
  112. bigStars[i].graphics.drawCircle(0, 0, (bigStars[i].size * 1 + 0.25) );
  113. sky.addChildAt(bigStars[i], i);
  114. }
  115. }
  116. }
  117. // Switch to and from full screen mode
  118. private function FullScreenSwitch(event:Event):void {
  119. // if you are in normal mode, switch to fullscreen
  120. // if you are in fullscreen, switch back to normal
  121. if (StageDisplayState.FULL_SCREEN == stage.displayState) {
  122. stage.displayState = StageDisplayState.NORMAL
  123. }
  124. else {
  125. var screenRectangle:Rectangle = new Rectangle(0, 0, Capabilities.screenResolutionX, Capabilities.screenResolutionY);
  126. stage.fullScreenSourceRect = screenRectangle;
  127. stage.displayState = StageDisplayState.FULL_SCREEN;
  128. }
  129. }
  130. // rerender the stars when entering and exiting full screen mode
  131. private function FullScreenHandler(event:FullScreenEvent):void {
  132. DrawStars();
  133. }
  134. } // end Constellation class
  135. } // end package