※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


FAVORITE BY
:
some japanese sidescrolling tunnel
FORKED
  1. // forked from gyuque's なんとかディウスっぽい背景
  2. // 左右キーとスペースで操作できます
  3. package
  4. {
  5.     import flash.display.*;
  6.     import flash.geom.*;
  7.     import flash.events.*;
  8.     import flash.ui.*;
  9.     [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]
  10.     public class Nemesis extends Sprite
  11.     {
  12.         public static const W:int = 320;
  13.         public static const H:int = 240;
  14.         private var mBGen:MountainGen = new MountainGen(80);
  15.         private var mTGen:MountainGen = new MountainGen(801);
  16.         
  17.         private var mScreenBmp:Bitmap;
  18.         private var mScreen:BitmapData = new BitmapData(W, H, false0);
  19.         private var mBGScreen:BitmapData = new BitmapData(W, H, true0);
  20.         
  21.         private var mStarbg:StarBG = new StarBG(W, H, 50);
  22.         private var mKani:Kani;
  23.         private var legs:Array = new Array();
  24.         
  25.         private var count:int = 0;
  26.         
  27.         function Nemesis()
  28.         {
  29.             mScreenBmp = new Bitmap(mScreen);
  30.             addChild(mScreenBmp);
  31.             
  32.             mBGen.step();
  33.             mTGen.step();
  34.             for(var i:int = 0; i < W; i++)
  35.             {
  36.                 mBGen.step();
  37.                 mTGen.step();
  38.                 mBGen.draw(mBGScreen, i, 160);
  39.                 mTGen.draw(mBGScreen, i, 0false);
  40.             }
  41.             
  42.             legs.push(new Leg(-801));
  43.             legs.push(new Leg(  01));
  44.             legs.push(new Leg( 801));
  45.             legs.push(new Leg(-80, -1));
  46.             legs.push(new Leg(  0, -1));
  47.             legs.push(new Leg( 80, -1));
  48.             
  49.             mKani = new Kani(legs);
  50.             
  51.             addEventListener(Event.ENTER_FRAME, tick);
  52.             stage.addEventListener(KeyboardEvent.KEY_DOWN, Key.onKeyDownHandler);
  53.             stage.addEventListener(KeyboardEvent.KEY_UP, Key.onKeyUpHandler);
  54.         }
  55.         
  56.         private function tick(e:Event):void
  57.         {
  58.             var leg:Leg;
  59.             
  60.             mStarbg.main();
  61.             mKani.main();
  62.             
  63.             if(count % 2 == 0) {scroll(1);}
  64.             count++;
  65.             
  66.             //描画
  67.             mScreen.fillRect(mScreen.rect, 0);
  68.             mStarbg.draw(mScreen);
  69.             
  70.             var matrix:Matrix = new Matrix();
  71.             for each(leg in legs)
  72.             {
  73.                 matrix.translate(leg.x, leg.y);
  74.                 mScreen.draw(leg.sprite, matrix);
  75.                 matrix.identity();
  76.             }
  77.             matrix.translate(mKani.x, mKani.y);
  78.             mScreen.draw(mKani, matrix);
  79.             
  80.             mScreen.copyPixels(mBGScreen, mScreen.rect, new Point(00));
  81.             
  82.             //当たり判定
  83.             for each(leg in legs) {
  84.                 leg.hitflag = mBGScreen.getPixel32(leg.x, leg.y) != 0x00000000;
  85.             }
  86.         }
  87.         
  88.         public function scroll(vx:int):void
  89.         {
  90.             mBGScreen.scroll(-vx, 0);
  91.             mBGScreen.fillRect(new Rectangle(W-vx, 0, vx, H), 0);
  92.             
  93.             var i:int;
  94.             mBGen.step();
  95.             mTGen.step();
  96.             
  97.             for (i = 0; i < vx; i++)
  98.             {
  99.                 mBGen.step();
  100.                 mTGen.step();
  101.                 mBGen.draw(mBGScreen, W-vx+i, 160);
  102.                 mTGen.draw(mBGScreen, W-vx+i, 0false);
  103.             }
  104.             
  105.             mKani.x -= vx;
  106.             for each(var leg:Leg in legs) {leg.x -= vx;}
  107.         }
  108.     }
  109. }
  110. import flash.display.*;
  111. import flash.events.*;
  112. import flash.geom.*;
  113. import flash.ui.*;
  114. class Kani extends Sprite
  115. {
  116.     public var body:Body = new Body();
  117.     public var legs:Array = new Array();
  118.     
  119.     public var auto:Boolean;
  120.     public var dir:String = "none";
  121.     public var timer:int;
  122.     public var dance:int;
  123.     
  124.     function Kani(legs:Array)
  125.     {
  126.         x = 200;
  127.         y = 120;
  128.         
  129.         auto = false;
  130.         timer = 100;
  131.         
  132.         this.legs = legs;
  133.         for each(var leg:Leg in legs)
  134.         {
  135.             leg.parent = this;
  136.             leg.x = x+leg.offset - 20+Math.random()*40;
  137.             leg.y = 120 + 100*leg.invert;
  138.         }
  139.         
  140.         addChild(body);
  141.     }
  142.     
  143.     public function main():void
  144.     {
  145.         var leg:Leg;
  146.         
  147.         if(auto == false)
  148.         {
  149.             if(Key.isLeft == true) {dir = "left"; timer = 90;}
  150.             else if(Key.isRight == true) {dir = "right"; timer = 90;}
  151.             else {dir = "none";}
  152.             
  153.             if(Key.isSpace == true && dance == 0) {dance = 20; timer = 90;}
  154.             
  155.             timer--;
  156.             if(timer == 0) {auto = true;}
  157.         }
  158.         if(auto == true)
  159.         {
  160.             if(timer == 0)
  161.             {
  162.                 if(dir == "none")
  163.                 {
  164.                     if(x < 160) {dir = "right";}
  165.                     else {dir = "left";}
  166.                 }
  167.                 else {
  168.                     if(x < 50 && dir != "right") {
  169.                         timer = 60;
  170.                     }
  171.                     if(x > 300 && dir != "left") {
  172.                         timer = 60;
  173.                     }
  174.                 }
  175.             }
  176.             else {
  177.                 dir = "none";
  178.                 if(timer == 40) {
  179.                     dance = 20;
  180.                 }
  181.                 timer--;
  182.             }
  183.             
  184.             if(Key.isLeft == true || Key.isRight == true)
  185.             {
  186.                 auto = false;
  187.                 timer = 90;
  188.             }
  189.         }
  190.         
  191.         if(dir == "left") {x -= 2;}
  192.         if(dir == "right") {x += 2;}
  193.         
  194.         if(dir != "none") {
  195.             for each(leg in legs) {
  196.                 leg.move(dir);
  197.             }
  198.         }
  199.         
  200.         if(dance > 0)
  201.         {
  202.             if(dance > 15) {body.x = 2;}
  203.             else if(dance > 10) {body.x = 0;}
  204.             else if(dance > 5) {body.x = -2;}
  205.             else {body.x = 0;}
  206.             dance--;
  207.         }
  208.         
  209.         graphics.clear();
  210.         for each(leg in legs)
  211.         {
  212.             graphics.lineStyle(6, 0xFF80FF);
  213.             graphics.moveTo(leg.offset/810*leg.invert);
  214.             graphics.lineTo((leg.x-x), (leg.y-y)-70*leg.invert);
  215.             graphics.endFill();
  216.         }
  217.     }
  218. }
  219. class Body extends Sprite
  220. {
  221.     function Body()
  222.     {
  223.         graphics.beginFill(0xC060C0);
  224.         graphics.lineStyle(2, 0xFF80FF);
  225.         graphics.drawRect(-15, -153030);
  226.         graphics.endFill();
  227.     }
  228. }
  229. class Leg
  230. {
  231.     public var parent:Kani;
  232.     public var sprite:Sprite;
  233.     
  234.     public var x:Number;
  235.     public var y:Number;
  236.     public var offset:Number;
  237.     public var invert:int;
  238.     public var hitflag:Boolean;
  239.     public var moveflag:Boolean;
  240.     public var gear:int;
  241.     
  242.     function Leg(offset:Number, invert:int)
  243.     {
  244.         this.offset = offset;
  245.         this.invert = invert;
  246.         
  247.         sprite = new Sprite();
  248.         
  249.         sprite.graphics.beginFill(0xC060C0);
  250.         sprite.graphics.lineStyle(0, 0xFF80FF);
  251.         sprite.graphics.lineTo(-5, -40*invert);
  252.         sprite.graphics.lineTo(-5, -60*invert);
  253.         sprite.graphics.lineTo(-2, -70*invert);
  254.         sprite.graphics.lineTo(2, -70*invert);
  255.         sprite.graphics.lineTo(5, -60*invert);
  256.         sprite.graphics.lineTo(5, -40*invert);
  257.         sprite.graphics.lineTo(00);
  258.         sprite.graphics.endFill();
  259.     }
  260.     
  261.     public function move(dir:String):void
  262.     {
  263.         var threshold_l:Number = parent.x+offset + 30;
  264.         var threshold_r:Number = parent.x+offset - 30;
  265.         
  266.         if(moveflag == false) {
  267.             if(threshold_l < x || threshold_r > x)
  268.             {
  269.                 moveflag = true;
  270.                 gear = -12;
  271.             }
  272.             if(threshold_r > x)
  273.             {
  274.                 moveflag = true;
  275.                 gear = 12;
  276.             }
  277.         }
  278.         
  279.         if(moveflag == true)
  280.         {
  281.             if(dir == "left" && threshold_l-50 < x)
  282.             {
  283.                 x -= 4;
  284.                 
  285.                 if(gear < 0) {
  286.                     y -= 4 * invert;
  287.                 }
  288.                 else {
  289.                     y += 4 * invert;
  290.                     if(hitflag == true) {
  291.                         moveflag = false;
  292.                     }
  293.                     if(y < 0 || y > 240) {
  294.                         gear = -12;
  295.                     }
  296.                 }
  297.                 gear++;
  298.             }
  299.             else if(dir == "right" && threshold_r+50 > x)
  300.             {
  301.                 x += 4;
  302.                 
  303.                 if(gear > 0) {
  304.                     y -= 4 * invert;
  305.                 }
  306.                 else {
  307.                     y += 4 * invert;
  308.                     if(hitflag == true) {
  309.                         moveflag = false;
  310.                     }
  311.                     if(y < 0 || y > 240) {
  312.                         gear = 12;
  313.                     }
  314.                 }
  315.                 gear--;
  316.             }
  317.         }
  318.     }
  319. }
  320. class StarBG
  321. {
  322.     private var mWidth:int;
  323.     private var mHeight:int;
  324.     private var mStars:Array;
  325.     private var mN:int;
  326.     
  327.     private var mCount:int = 0;
  328.     function StarBG(w:int, h:int, n:int)
  329.     {
  330.         mWidth = w;
  331.         mHeight = h;
  332.         mN = n;
  333.         mStars  = new Array(n);
  334.         for (var i:int = 0;i < n;i++) {
  335.             mStars[i] = {
  336.                 x : Math.random()*w, y : Math.random()*h, speed : -Math.random()*1.5-0.5,
  337.                 color : ((Math.random()*0xC0+0x40)<<8)+((Math.random()*0xC0+0x40)<<16)+(Math.random()*0xC0+0x40),
  338.                 blink : Math.floor(Math.random())*40+20
  339.             };
  340.         }
  341.     }
  342.     public function main():void
  343.     {
  344.         var n:int = mN;
  345.         for each(var star:Object in mStars)
  346.         {
  347.             star.x += star.speed;
  348.             
  349.             if(star.x < 0)
  350.             {
  351.                 star.x += mWidth;
  352.                 star.y = Math.random()*mHeight;
  353.                 star.speed = -Math.random()*1.5-0.5;
  354.             }
  355.         }
  356.         mCount++;
  357.     }
  358.     public function draw(b:BitmapData):void
  359.     {
  360.         for each(var star:Object in mStars)
  361.         {
  362.             if((mCount % star.blink) == 1) {b.setPixel(star.x, star.y, 0xFFFFFF);}
  363.             else {b.setPixel(star.x, star.y, star.color);}
  364.         }
  365.     }
  366. }
  367. class Key
  368. {
  369.     public static var isLeft:Boolean = false;
  370.     public static var isRight:Boolean = false;
  371.     public static var isSpace:Boolean = false;
  372.     
  373.     public static function onKeyDownHandler(e:KeyboardEvent):void
  374.     {
  375.         switch(e.keyCode) {
  376.             case Keyboard.LEFT: Key.isLeft = truebreak;
  377.             case Keyboard.RIGHT: Key.isRight = truebreak;
  378.             case Keyboard.SPACE: Key.isSpace = truebreak;
  379.         }
  380.     }
  381.     public static function onKeyUpHandler(e:KeyboardEvent):void
  382.     {
  383.         switch(e.keyCode) {
  384.             case Keyboard.LEFT: Key.isLeft = falsebreak;
  385.             case Keyboard.RIGHT: Key.isRight = falsebreak;
  386.             case Keyboard.SPACE: Key.isSpace = falsebreak;
  387.         }
  388.     }
  389. }
  390. class MountainGen
  391. {
  392.     private var mPrevBuffer:Array;
  393.     private var mHeight:int;
  394.     private var mCount:int = 100;
  395.     private var tmpBuffer:Array;
  396.     private var mGenFunc:Function;
  397.     function MountainGen(h:int, generator:int = 0)
  398.     {
  399.         mHeight = h;
  400.         mGenFunc = generator ? genWav2 : genWav;
  401.         mPrevBuffer = new Array(h);
  402.         tmpBuffer   = new Array(h);
  403.     }
  404.     public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
  405.     {
  406.         var i:int;
  407.         for (i = 0;i < mHeight;i++) {
  408.             if (tmpBuffer[i]) {
  409.                 var c:int = tmpBuffer[i];
  410.                 b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
  411.             }
  412.         }
  413.     }
  414.     public function step():void
  415.     {
  416.         var t:Number = Number(mCount) * 0.02;
  417.         var h:int = mGenFunc(t) * mHeight;
  418.         var i:int, k:int, m:int;
  419.         for (i = 0;i < mHeight;i++) {
  420.             mPrevBuffer[i] = tmpBuffer[i];
  421.         }
  422.         for (i = 0;i < mHeight;i++) {
  423.             tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
  424.             if (tmpBuffer[i]) {
  425.                 if (mPrevBuffer[i])
  426.                     tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
  427.                 if (mPrevBuffer[i] == 0 || i == (h-1)) {
  428.                     m = 50;
  429.                     for (k = i;k >= 0 && m > 0;k--, m-=4) {
  430.                         if (m > 33) m--;
  431.                         tmpBuffer[k] += m;
  432.                         m += Math.random()*7;
  433.                     }
  434.                 }
  435.                 if (mPrevBuffer[i+1] && i == (h-1)) {
  436.                     m = -48;
  437.                     for (k = i;k >= 0 && m < 0;k--, m++) {
  438.                         tmpBuffer[k] += m;
  439.                         if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
  440.                     }
  441.                 }
  442.            }
  443.         }
  444.        for (i = 0;i < mHeight;i++)
  445.             tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
  446.         mCount++;
  447.     }
  448.     private static function genWav(t:Number, nest:int = 0):Number
  449.     {
  450.         var v:Number = Math.sin(t);
  451.         v += Math.cos(t*3) * 0.1;
  452.         v += Math.cos(0.1 + t*10) * 0.02;
  453.         v *= Math.cos(t*0.1);
  454.         if (nest < 5)
  455.             v += genWav(t+1, ++nest);
  456.         v = v*0.2 + 0.3;
  457.         return (v<0) ? 0 : (v>1) ? 1 : v;
  458.     }
  459.     private static function genWav2(t:Number, nest:int = 0):Number
  460.     {
  461.         var v:Number = Math.sin(t);
  462.         v += Math.cos(t*3) * 0.1;
  463.         v += Math.cos(0.1 + t*9) * 0.02;
  464.         v *= Math.cos(0.2 + t*0.15);
  465.         if (nest < 5)
  466.             v += genWav2(t+1, ++nest);
  467.         v = v*0.2 + 0.2;
  468.         return (v<0) ? 0 : (v>1) ? 1 : v;
  469.     }
  470. }
noswf
  1. // forked from gyuque's なんとかディウスっぽい背景
  2. // ゲームっぽくしてみた
  3. // 十字キーで移動
  4. // スペースキーで弾発射
  5. // だれか当たり判定つけて><
  6. package
  7. {
  8.     import flash.display.*;
  9.     import flash.geom.*;
  10.     import flash.events.*;
  11.     import flash.ui.Keyboard;
  12.     [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]  
  13.     public class Nemesis extends Sprite
  14.     {
  15.         public static const W:int = 320;
  16.         public static const H:int = 240;
  17.         private var mScroll:int = 0;
  18.         private var mMyPos:Point;
  19.         private var mBGen:MountainGen = new MountainGen(160);
  20.         private var mTGen:MountainGen = new MountainGen(1601);
  21.         private var mBGScreen:BitmapData = new BitmapData(W, H, true0);
  22.         private var mBGScreenBmp:Bitmap;
  23.         private var mBGScreenBmp2:Bitmap;
  24.         private var mStarbg:StarBG = new StarBG(W, H, 30);
  25.         
  26.         private var ship:Ship = new Ship(0x00ffff);
  27.         private var speed:int = 4;
  28.         private var isUp:Boolean = false;
  29.         private var isDown:Boolean = false;
  30.         private var isLeft:Boolean = false;
  31.         private var isRight:Boolean = false;
  32.         private var isShot:Boolean = false;
  33.         
  34.         function Nemesis()
  35.         {
  36.             addChild(mStarbg);
  37.             mBGScreenBmp = new Bitmap(mBGScreen);
  38.             addChild(mBGScreenBmp);
  39.             mBGScreenBmp2 = new Bitmap(mBGScreen);
  40.             addChild(mBGScreenBmp2);
  41.             addChild(ship);
  42.             ship.x = 40;
  43.             ship.y = H / 2;
  44.             
  45.             var i:int;
  46.             mBGen.step();
  47.             mTGen.step();
  48.             for (i = 0;i < W;i++) {
  49.                 mBGen.step();
  50.                 mTGen.step();
  51.                 mBGen.draw(mBGScreen, i, 80);
  52.                 mTGen.draw(mBGScreen, i, 0false);
  53.             }
  54.             addEventListener(Event.ENTER_FRAME, tick);
  55.             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
  56.             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
  57.         }
  58.         
  59.         private var _clrrc:Rectangle = new Rectangle(001, H);
  60.         private function tick(e:Event):void
  61.         {
  62.             
  63.             var ox:int = mScroll % W;
  64.             _clrrc.x = ox;
  65.             mBGScreen.fillRect(_clrrc, 0);
  66.             mStarbg.tick();
  67.             mBGen.step();
  68.             mTGen.step();
  69.             mStarbg.draw();
  70.             mBGen.draw(mBGScreen, ox, 80);
  71.             mTGen.draw(mBGScreen, ox, 0false);
  72.             mBGScreenBmp.x = -ox;
  73.             mBGScreenBmp2.x = W-ox;
  74.             mScroll++;
  75.             
  76.             ship.y -= isUp? speed : 0;
  77.             ship.y += isDown? speed: 0;
  78.             ship.x -= isLeft? speed: 0;
  79.             ship.x += isRight? speed: 0;
  80.             if (isShot && !(mScroll%5)) {
  81.                 var bullet:Bullet = new Bullet(0xff00ff, 320);
  82.                 bullet.x = ship.x;
  83.                 bullet.y = ship.y;
  84.                 addChild(bullet);
  85.             }
  86.             if (ship.x - ship.width< 0) ship.x = ship.width;
  87.             else if (ship.x > W) ship.x = W;
  88.                         if (ship.y - ship.height/2 < 0) ship.y = ship.height/2;
  89.                         else if (ship.y + ship.height/2 > H) ship.y = H - ship.height/2
  90.             
  91.         }
  92.         
  93.         private function onKeyDownHandler(e:KeyboardEvent):void {
  94.             switch(e.keyCode) {
  95.                 case Keyboard.UP: isUp = truebreak;
  96.                 case Keyboard.DOWN: isDown = truebreak;
  97.                 case Keyboard.LEFT: isLeft = truebreak;
  98.                 case Keyboard.RIGHT: isRight = truebreak;
  99.                 case Keyboard.SPACE: isShot = truebreak;
  100.             }
  101.         }
  102.         private function onKeyUpHandler(e:KeyboardEvent):void 
  103.         {
  104.             switch(e.keyCode) {
  105.                 case Keyboard.UP: isUp = falsebreak;
  106.                 case Keyboard.DOWN: isDown = falsebreak;
  107.                 case Keyboard.LEFT: isLeft = falsebreak;
  108.                 case Keyboard.RIGHT: isRight = falsebreak;
  109.                 case Keyboard.SPACE: isShot = falsebreak;
  110.             }            
  111.         }        
  112.     }
  113. }
  114. import flash.display.*;
  115. import flash.events.Event;
  116. import flash.geom.Point;
  117.     
  118. class Ship extends Sprite
  119. {
  120.     public var color:uint;
  121.     function Ship(color:uint)
  122.     {
  123.         this.color = color;
  124.         this.graphics.lineStyle(0, color);
  125.         this.graphics.lineTo( -30, -10);
  126.         this.graphics.lineTo( -3010);
  127.         this.graphics.lineTo(00);
  128.         this.graphics.endFill();
  129.     }
  130. }
  131. class Bullet extends Sprite
  132. {
  133.     public var color:uint;
  134.     public var size:uint;
  135.     public var speed:uint;
  136.     function Bullet(color:uint = 0x0000ff, size:uint = 3, speed:uint = 5)
  137.     {
  138.         this.color = color;
  139.         this.size = size;
  140.         this.speed = speed;
  141.         
  142.         this.graphics.lineStyle(0, color);
  143.         this.graphics.drawCircle(00, size);
  144.         this.graphics.endFill();
  145.         
  146.         addEventListener(Event.ENTER_FRAME, updateHandler);
  147.     }
  148.     
  149.     private function updateHandler(e:Event):void 
  150.     {
  151.         this.x += speed;
  152.         
  153.         if (this.x + size / 2 > Nemesis.W) {
  154.             this.parent.removeChild(this);
  155.             removeEventListener(Event.ENTER_FRAME, updateHandler);
  156.         }
  157.     }
  158. }
  159. class MountainGen
  160. {
  161.     private var mPrevBuffer:Array;
  162.     private var mHeight:int;
  163.     private var mCount:int = 0;
  164.     private var tmpBuffer:Array;
  165.     private var mGenFunc:Function;
  166.     function MountainGen(h:int, generator:int = 0)
  167.     {
  168.         mHeight = h;
  169.         mGenFunc = generator ? genWav2 : genWav;
  170.         mPrevBuffer = new Array(h);
  171.         tmpBuffer   = new Array(h);
  172.     }
  173.     public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
  174.     {
  175.         var i:int;
  176.         for (i = 0;i < mHeight;i++) {
  177.             if (tmpBuffer[i]) {
  178.                 var c:int = tmpBuffer[i];
  179.                 b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
  180.             }
  181.         }        
  182.     }
  183.     public function step():void
  184.     {
  185.         var t:Number = Number(mCount) * 0.02;
  186.         var h:int = mGenFunc(t) * mHeight;
  187.         var i:int, k:int, m:int;
  188.         for (i = 0;i < mHeight;i++) {
  189.             mPrevBuffer[i] = tmpBuffer[i];
  190.         }
  191.         
  192.         for (i = 0;i < mHeight;i++) {
  193.             tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
  194.             if (tmpBuffer[i]) {
  195.                 if (mPrevBuffer[i])
  196.                     tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
  197.                 if (mPrevBuffer[i] == 0 || i == (h-1)) {
  198.                     m = 50;
  199.                     for (k = i;k >= 0 && m > 0;k--, m-=4) {
  200.                         if (m > 33) m--;
  201.                         tmpBuffer[k] += m;
  202.                         m += Math.random()*7;
  203.                     }
  204.                 }
  205.                 if (mPrevBuffer[i+1] && i == (h-1)) {
  206.                     m = -48;
  207.                     for (k = i;k >= 0 && m < 0;k--, m++) {
  208.                         tmpBuffer[k] += m;
  209.                         if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
  210.                     }
  211.                 }
  212.            }
  213.         }
  214.        for (i = 0;i < mHeight;i++)
  215.             tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
  216.         mCount++;
  217.     }
  218.     private static function genWav(t:Number, nest:int = 0):Number
  219.     {
  220.         var v:Number = Math.sin(t);
  221.         v += Math.cos(t*3) * 0.1;
  222.         v += Math.cos(0.1 + t*10) * 0.02;
  223.         v *= Math.cos(t*0.1);
  224.         if (nest < 5)
  225.             v += genWav(t+1, ++nest);
  226.         v = v*0.2 + 0.3;
  227.         return (v<0) ? 0 : (v>1) ? 1 : v;
  228.     }
  229.     private static function genWav2(t:Number, nest:int = 0):Number
  230.     {
  231.         var v:Number = Math.sin(t);
  232.         v += Math.cos(t*3) * 0.1;
  233.         v += Math.cos(0.1 + t*9) * 0.02;
  234.         v *= Math.cos(0.2 + t*0.15);
  235.         if (nest < 5)
  236.             v += genWav2(t+1, ++nest);
  237.         v = v*0.2 + 0.2;
  238.         return (v<0) ? 0 : (v>1) ? 1 : v;
  239.     }
  240. }
  241. class StarBG extends Sprite
  242. {
  243.     private var mWidth:int;
  244.     private var mHeight:int;
  245.     private var mStars:Array;
  246.     private var mStarVs:Array;
  247.     private var mN:int;
  248.     function StarBG(w:int, h:int, n:int)
  249.     {
  250.         mWidth = w;
  251.         mHeight = h;
  252.         mN = n;
  253.         mStars  = new Array(n);
  254.         mStarVs = new Array(n);
  255.         for (var i:int = 0;i < n;i++) {
  256.             mStars[i] = new Point(int( Math.random()*w ), int( Math.random()*h ));
  257.             mStarVs[i] = Math.random() + 0.2;
  258.         }
  259.     }
  260.     public function tick():void
  261.     {
  262.         var n:int = mN;
  263.         for (var i:int = 0;i < n;i++) {
  264.             mStars[i].x -= Number(mStarVs[i]);
  265.             if (mStars[i].x < 0) {
  266.                 mStars[i].x += mWidth;
  267.                 mStars[i].y = int( Math.random()*mHeight );
  268.             }
  269.         }
  270.     }
  271.     public function draw():void
  272.     {
  273.         var g:Graphics = graphics;
  274.         var n:int = mN;
  275.         g.clear();
  276.         for (var i:int = 0;i < n;i++) {
  277.             g.beginFill(0xffffff);
  278.             g.drawCircle( mStars[i].x, mStars[i].y , 0.4);
  279.         }   
  280.     }
  281. }
noswf
Get Adobe Flash Player