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

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

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


forked from : gyuque's なんとかディウスっぽい背景 [diff(117)]

FORKED

ゲームっぽくしてみたforked from: なんとかディウスっぽい背景 forked from: ゲームっぽくしてみたforked from: なんとかディウスっぽい背景 [diff(1)]

  1. // forked from ton's ゲームっぽくしてみたforked from: なんとかディウスっぽい背景
  2. // forked from gyuque's なんとかディウスっぽい背景
  3. // ゲームっぽくしてみた
  4. // 十字キーで移動
  5. // スペースキーで弾発射
  6. // だれか当たり判定つけて><
  7. package
  8. {
  9.     import flash.display.*;
  10.     import flash.geom.*;
  11.     import flash.events.*;
  12.     import flash.ui.Keyboard;
  13.     [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]  
  14.     public class Nemesis extends Sprite
  15.     {
  16.         public static const W:int = 320;
  17.         public static const H:int = 240;
  18.         private var mScroll:int = 0;
  19.         private var mMyPos:Point;
  20.         private var mBGen:MountainGen = new MountainGen(160);
  21.         private var mTGen:MountainGen = new MountainGen(1601);
  22.         private var mBGScreen:BitmapData = new BitmapData(W, H, true0);
  23.         private var mBGScreenBmp:Bitmap;
  24.         private var mBGScreenBmp2:Bitmap;
  25.         private var mStarbg:StarBG = new StarBG(W, H, 30);
  26.         
  27.         private var ship:Ship = new Ship(0x00ffff);
  28.         private var speed:int = 4;
  29.         private var isUp:Boolean = false;
  30.         private var isDown:Boolean = false;
  31.         private var isLeft:Boolean = false;
  32.         private var isRight:Boolean = false;
  33.         private var isShot:Boolean = false;
  34.         
  35.         function Nemesis()
  36.         {
  37.             addChild(mStarbg);
  38.             mBGScreenBmp = new Bitmap(mBGScreen);
  39.             addChild(mBGScreenBmp);
  40.             mBGScreenBmp2 = new Bitmap(mBGScreen);
  41.             addChild(mBGScreenBmp2);
  42.             addChild(ship);
  43.             ship.x = 40;
  44.             ship.y = H / 2;
  45.             
  46.             var i:int;
  47.             mBGen.step();
  48.             mTGen.step();
  49.             for (i = 0;i < W;i++) {
  50.                 mBGen.step();
  51.                 mTGen.step();
  52.                 mBGen.draw(mBGScreen, i, 80);
  53.                 mTGen.draw(mBGScreen, i, 0false);
  54.             }
  55.             addEventListener(Event.ENTER_FRAME, tick);
  56.             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
  57.             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
  58.         }
  59.         
  60.         private var _clrrc:Rectangle = new Rectangle(001, H);
  61.         private function tick(e:Event):void
  62.         {
  63.             
  64.             var ox:int = mScroll % W;
  65.             _clrrc.x = ox;
  66.             mBGScreen.fillRect(_clrrc, 0);
  67.             mStarbg.tick();
  68.             mBGen.step();
  69.             mTGen.step();
  70.             mStarbg.draw();
  71.             mBGen.draw(mBGScreen, ox, 80);
  72.             mTGen.draw(mBGScreen, ox, 0false);
  73.             mBGScreenBmp.x = -ox;
  74.             mBGScreenBmp2.x = W-ox;
  75.             mScroll++;
  76.             
  77.             ship.y -= isUp? speed : 0;
  78.             ship.y += isDown? speed: 0;
  79.             ship.x -= isLeft? speed: 0;
  80.             ship.x += isRight? speed: 0;
  81.             if (isShot && !(mScroll%5)) {
  82.                 var bullet:Bullet = new Bullet(0xff00ff, 320);
  83.                 bullet.x = ship.x;
  84.                 bullet.y = ship.y;
  85.                 addChild(bullet);
  86.             }
  87.             if (ship.x - ship.width< 0) ship.x = ship.width;
  88.             else if (ship.x > W) ship.x = W;
  89.                         if (ship.y - ship.height/2 < 0) ship.y = ship.height/2;
  90.                         else if (ship.y + ship.height/2 > H) ship.y = H - ship.height/2
  91.             
  92.         }
  93.         
  94.         private function onKeyDownHandler(e:KeyboardEvent):void {
  95.             switch(e.keyCode) {
  96.                 case Keyboard.UP: isUp = truebreak;
  97.                 case Keyboard.DOWN: isDown = truebreak;
  98.                 case Keyboard.LEFT: isLeft = truebreak;
  99.                 case Keyboard.RIGHT: isRight = truebreak;
  100.                 case Keyboard.SPACE: isShot = truebreak;
  101.             }
  102.         }
  103.         private function onKeyUpHandler(e:KeyboardEvent):void 
  104.         {
  105.             switch(e.keyCode) {
  106.                 case Keyboard.UP: isUp = falsebreak;
  107.                 case Keyboard.DOWN: isDown = falsebreak;
  108.                 case Keyboard.LEFT: isLeft = falsebreak;
  109.                 case Keyboard.RIGHT: isRight = falsebreak;
  110.                 case Keyboard.SPACE: isShot = falsebreak;
  111.             }            
  112.         }        
  113.     }
  114. }
  115. import flash.display.*;
  116. import flash.events.Event;
  117. import flash.geom.Point;
  118.     
  119. class Ship extends Sprite
  120. {
  121.     public var color:uint;
  122.     function Ship(color:uint)
  123.     {
  124.         this.color = color;
  125.         this.graphics.lineStyle(0, color);
  126.         this.graphics.lineTo( -30, -10);
  127.         this.graphics.lineTo( -3010);
  128.         this.graphics.lineTo(00);
  129.         this.graphics.endFill();
  130.     }
  131. }
  132. class Bullet extends Sprite
  133. {
  134.     public var color:uint;
  135.     public var size:uint;
  136.     public var speed:uint;
  137.     function Bullet(color:uint = 0x0000ff, size:uint = 3, speed:uint = 5)
  138.     {
  139.         this.color = color;
  140.         this.size = size;
  141.         this.speed = speed;
  142.         
  143.         this.graphics.lineStyle(0, color);
  144.         this.graphics.drawCircle(00, size);
  145.         this.graphics.endFill();
  146.         
  147.         addEventListener(Event.ENTER_FRAME, updateHandler);
  148.     }
  149.     
  150.     private function updateHandler(e:Event):void 
  151.     {
  152.         this.x += speed;
  153.         
  154.         if (this.x + size / 2 > Nemesis.W) {
  155.             this.parent.removeChild(this);
  156.             removeEventListener(Event.ENTER_FRAME, updateHandler);
  157.         }
  158.     }
  159. }
  160. class MountainGen
  161. {
  162.     private var mPrevBuffer:Array;
  163.     private var mHeight:int;
  164.     private var mCount:int = 0;
  165.     private var tmpBuffer:Array;
  166.     private var mGenFunc:Function;
  167.     function MountainGen(h:int, generator:int = 0)
  168.     {
  169.         mHeight = h;
  170.         mGenFunc = generator ? genWav2 : genWav;
  171.         mPrevBuffer = new Array(h);
  172.         tmpBuffer   = new Array(h);
  173.     }
  174.     public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
  175.     {
  176.         var i:int;
  177.         for (i = 0;i < mHeight;i++) {
  178.             if (tmpBuffer[i]) {
  179.                 var c:int = tmpBuffer[i];
  180.                 b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
  181.             }
  182.         }        
  183.     }
  184.     public function step():void
  185.     {
  186.         var t:Number = Number(mCount) * 0.02;
  187.         var h:int = mGenFunc(t) * mHeight;
  188.         var i:int, k:int, m:int;
  189.         for (i = 0;i < mHeight;i++) {
  190.             mPrevBuffer[i] = tmpBuffer[i];
  191.         }
  192.         
  193.         for (i = 0;i < mHeight;i++) {
  194.             tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
  195.             if (tmpBuffer[i]) {
  196.                 if (mPrevBuffer[i])
  197.                     tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
  198.                 if (mPrevBuffer[i] == 0 || i == (h-1)) {
  199.                     m = 50;
  200.                     for (k = i;k >= 0 && m > 0;k--, m-=4) {
  201.                         if (m > 33) m--;
  202.                         tmpBuffer[k] += m;
  203.                         m += Math.random()*7;
  204.                     }
  205.                 }
  206.                 if (mPrevBuffer[i+1] && i == (h-1)) {
  207.                     m = -48;
  208.                     for (k = i;k >= 0 && m < 0;k--, m++) {
  209.                         tmpBuffer[k] += m;
  210.                         if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
  211.                     }
  212.                 }
  213.            }
  214.         }
  215.        for (i = 0;i < mHeight;i++)
  216.             tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
  217.         mCount++;
  218.     }
  219.     private static function genWav(t:Number, nest:int = 0):Number
  220.     {
  221.         var v:Number = Math.sin(t);
  222.         v += Math.cos(t*3) * 0.1;
  223.         v += Math.cos(0.1 + t*10) * 0.02;
  224.         v *= Math.cos(t*0.1);
  225.         if (nest < 5)
  226.             v += genWav(t+1, ++nest);
  227.         v = v*0.2 + 0.3;
  228.         return (v<0) ? 0 : (v>1) ? 1 : v;
  229.     }
  230.     private static function genWav2(t:Number, nest:int = 0):Number
  231.     {
  232.         var v:Number = Math.sin(t);
  233.         v += Math.cos(t*3) * 0.1;
  234.         v += Math.cos(0.1 + t*9) * 0.02;
  235.         v *= Math.cos(0.2 + t*0.15);
  236.         if (nest < 5)
  237.             v += genWav2(t+1, ++nest);
  238.         v = v*0.2 + 0.2;
  239.         return (v<0) ? 0 : (v>1) ? 1 : v;
  240.     }
  241. }
  242. class StarBG extends Sprite
  243. {
  244.     private var mWidth:int;
  245.     private var mHeight:int;
  246.     private var mStars:Array;
  247.     private var mStarVs:Array;
  248.     private var mN:int;
  249.     function StarBG(w:int, h:int, n:int)
  250.     {
  251.         mWidth = w;
  252.         mHeight = h;
  253.         mN = n;
  254.         mStars  = new Array(n);
  255.         mStarVs = new Array(n);
  256.         for (var i:int = 0;i < n;i++) {
  257.             mStars[i] = new Point(int( Math.random()*w ), int( Math.random()*h ));
  258.             mStarVs[i] = Math.random() + 0.2;
  259.         }
  260.     }
  261.     public function tick():void
  262.     {
  263.         var n:int = mN;
  264.         for (var i:int = 0;i < n;i++) {
  265.             mStars[i].x -= Number(mStarVs[i]);
  266.             if (mStars[i].x < 0) {
  267.                 mStars[i].x += mWidth;
  268.                 mStars[i].y = int( Math.random()*mHeight );
  269.             }
  270.         }
  271.     }
  272.     public function draw():void
  273.     {
  274.         var g:Graphics = graphics;
  275.         var n:int = mN;
  276.         g.clear();
  277.         for (var i:int = 0;i < n;i++) {
  278.             g.beginFill(0xffffff);
  279.             g.drawCircle( mStars[i].x, mStars[i].y , 0.4);
  280.         }   
  281.     }
  282. }
noswf

ゲームっぽくしてみたforked from: なんとかディウスっぽい背景 マルチポー forked from: ゲームっぽくしてみた [diff(490)]

  1. // forked from ton's ゲームっぽくしてみたforked from: なんとかディウスっぽい背景
  2. // forked from gyuque's なんとかディウスっぽい背景
  3. // ゲームっぽくしてみた
  4. // 十字キーで移動
  5. // スペースキーで弾発射
  6. // だれか当たり判定つけて><
  7. package
  8. {
  9.     import flash.display.*;
  10.     import flash.geom.*;
  11.     import flash.events.*;
  12.     import flash.ui.Keyboard;
  13.     [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]  
  14.     public class Nemesis extends Sprite
  15.     {
  16.         public static const W:int = 320;
  17.         public static const H:int = 240;
  18.                 public static var KeyMapping:Object = {};
  19.         private var mScroll:int = 0;
  20.         private var mMyPos:Point;
  21.         private var mBGen:MountainGen = new MountainGen(160);
  22.         private var mTGen:MountainGen = new MountainGen(1601);
  23.         private var mBBGen:MountainGen = new MountainGen(1801true);
  24.         private var mBBGScreen:BitmapData = new BitmapData(W, H, true0);
  25.         private var mBBGScreenBmp:Bitmap;
  26.         private var mBBGScreenBmp2:Bitmap;
  27.         private var mBGScreen:BitmapData = new BitmapData(W, H, true0);
  28.         private var mBGScreenBmp:Bitmap;
  29.         private var mBGScreenBmp2:Bitmap;
  30.         private var mStarbg:StarBG = new StarBG(W, H, 30);
  31.         
  32.         private var ship:Ship = new Ship(0x00ffff, true);
  33.                 private var mKeyState:KeyState = new KeyState();
  34.         function Nemesis()
  35.         {
  36.             mapKey(Keyboard.UP, KeyState.K_UP);
  37.             mapKey(Keyboard.DOWN, KeyState.K_DOWN);
  38.             mapKey(Keyboard.LEFT,KeyState.K_LEFT);
  39.             mapKey(Keyboard.RIGHT, KeyState.K_RIGHT);
  40.             mapKey(Keyboard.SPACE, KeyState.K_TRG1);
  41.                         setupBG();
  42.                         setupShip();
  43.             addEventListener(Event.ENTER_FRAME, tick);
  44.             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
  45.             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
  46.         }
  47.                 private function setupShip():void {
  48.             ship.x = 40;
  49.             ship.y = H / 2;
  50.                         var m1:Ship = new Multiple();
  51.                         ship.appendMultiple(m1);
  52.                         var m2:Ship = new Multiple();
  53.                         ship.appendMultiple(m2);
  54.                         ship.fillMoveBuffer();           
  55.                         addChild(m1);
  56.                         addChild(m2);
  57.             addChild(ship);
  58.                 }
  59.                 private function setupBG():void {
  60.             addChild(mStarbg);
  61.             mBBGScreenBmp = new Bitmap(mBBGScreen);
  62.             addChild(mBBGScreenBmp);
  63.             mBBGScreenBmp2 = new Bitmap(mBBGScreen);
  64.             addChild(mBBGScreenBmp2);
  65.             mBGScreenBmp = new Bitmap(mBGScreen);
  66.             addChild(mBGScreenBmp);
  67.             mBGScreenBmp2 = new Bitmap(mBGScreen);
  68.             addChild(mBGScreenBmp2);
  69.             var i:int;
  70.             mBGen.step();
  71.             mTGen.step();
  72.             mBBGen.step();
  73.             for (i = 0;i < W;i++) {
  74.                 mBGen.step();
  75.                 mTGen.step();
  76.                 mBGen.draw(mBGScreen, i, 80);
  77.                 mTGen.draw(mBGScreen, i, 0false);
  78.                 mBBGen.step();
  79.                 mBBGen.draw(mBBGScreen, i, 60);
  80.             }
  81.                 }
  82.                 private static function mapKey(raw:uint, _to:uint):void {
  83.                     KeyMapping[raw] = _to;   
  84.                 }
  85.         
  86.         private var _clrrc:Rectangle = new Rectangle(001, H);
  87.         private function tick(e:Event):void
  88.         {
  89.             
  90.             var ox:int = mScroll % W;
  91.             var ox2:int = int(mScroll/2) % W;
  92.             _clrrc.x = ox;
  93.             mBGScreen.fillRect(_clrrc, 0);
  94.             mStarbg.tick();
  95.             mBGen.step();
  96.             mTGen.step();
  97.             mStarbg.draw();
  98.             mBGen.draw(mBGScreen, ox, 80);
  99.             mTGen.draw(mBGScreen, ox, 0false);
  100.                         if ((mScroll%2)==1) {
  101.                     _clrrc.x = ox2;
  102.                 mBBGScreen.fillRect(_clrrc, 0);
  103.                     mBBGen.step();
  104.                 mBBGen.draw(mBBGScreen, ox2, 60);
  105.                         }
  106.             mBGScreenBmp.x = -ox;
  107.             mBGScreenBmp2.x = W-ox;
  108.             mBBGScreenBmp.x = -ox2;
  109.             mBBGScreenBmp2.x = W-ox2;
  110.             ship.moveByKeyState(mKeyState.state);
  111.             ship.tick();
  112.                         ship.draw();
  113.             mScroll++;
  114.         }
  115.         
  116.         private function onKeyDownHandler(e:KeyboardEvent):void {
  117.                         if (KeyMapping.hasOwnProperty(e.keyCode))
  118.                             mKeyState.setState(KeyMapping[e.keyCode]);
  119.         }
  120.         private function onKeyUpHandler(e:KeyboardEvent):void 
  121.         {
  122.                         if (KeyMapping.hasOwnProperty(e.keyCode))
  123.                             mKeyState.delState(KeyMapping[e.keyCode]);
  124.         }        
  125.     }
  126. }
  127. import flash.display.*;
  128. import flash.events.Event;
  129. import flash.geom.Point;
  130. class KeyState
  131. {
  132.     public static const K_UP:uint    = 0x01;
  133.     public static const K_DOWN:uint  = 0x02;
  134.     public static const K_LEFT:uint  = 0x04;
  135.     public static const K_RIGHT:uint = 0x08;
  136.     public static const K_TRG1:uint  = 0x10;
  137.     private var mState:uint = 0;
  138.     public function setState(s:uint):void {
  139.         mState |= s;
  140.     }
  141.     public function delState(s:uint):void {
  142.         mState &= ~s;
  143.     }
  144.     public function get state():uint {
  145.         return mState;
  146.     }
  147. }
  148. class Ship extends Sprite
  149. {
  150.     private var speed:int = 4;
  151.         protected var mCount:int = 0;
  152.         private var mMovBuf:PositionRingBuffer;
  153.         private var mMultiples:Array;
  154.     public var color:uint;
  155.     function Ship(color:uint, enable_buf:Boolean = false)
  156.     {
  157.         this.color = color;
  158.             draw();
  159.             if (enable_buf)
  160.                 mMovBuf = new PositionRingBuffer(100);
  161.     }
  162.         public function fillMoveBuffer():void {
  163.             for (var i:int = 0;i < 100;i++)
  164.                 mMovBuf.push(x, y, false);
  165.         }
  166.         public function appendMultiple(m:Ship):void
  167.         {
  168.             if (!mMultiples) mMultiples = [];
  169.             mMultiples.push(m);
  170.         }
  171.         public function draw():void
  172.         {
  173.             var g:Graphics = graphics;
  174.             g.clear();
  175.         g.lineStyle(0, color);
  176.         g.lineTo( -30, -10);
  177.         g.lineTo( -3010);
  178.         g.lineTo(00);
  179.         g.endFill();
  180.             if (mMultiples) {
  181.                 for each(var m:Ship in mMultiples)
  182.                     m.draw();
  183.             }
  184.         }
  185.         public function moveByKeyState(s:uint):void
  186.         {
  187.         if (s&KeyState.K_UP)         y -= speed;
  188.         else if (s&KeyState.K_DOWN)  y += speed;
  189.         if (s&KeyState.K_LEFT)       x -= speed;
  190.         else if (s&KeyState.K_RIGHT) x += speed;
  191.         if (s&KeyState.K_TRG1)
  192.                     fireShot();
  193.         if (x - width< 0) x = width;
  194.             else if (x > Nemesis.W) x = Nemesis.W;
  195.         if (y - height/2 < 0) y = height/2;
  196.             else if (y + height/2 > Nemesis.H) y = Nemesis.H - height/2
  197.                 mMovBuf.push(x, y);
  198.         }
  199.         public function tick():void {
  200.             if (mMultiples) {
  201.                 var len:int = mMultiples.length;
  202.                 for (var i:int = 0;i < len;i++) {
  203.                     mMultiples[i].x = mMovBuf.getX((i+1)*8) - 10;
  204.                     mMultiples[i].y = mMovBuf.getY((i+1)*8);
  205.                 }
  206.                 for each(var m:Ship in mMultiples)
  207.                     m.tick();
  208.             }
  209.             mCount++;
  210.          }
  211.         public function fireShot():void {
  212.         if (!(mCount%5)) {
  213.             var bullet:Bullet = new Bullet();
  214.             bullet.x = x;
  215.             bullet.y = y;
  216.             parent.addChild(bullet);
  217.         }
  218.             if (mMultiples) {
  219.                 for each(var m:Ship in mMultiples)
  220.                     m.fireShot();
  221.             }
  222.         }
  223. }
  224. class Multiple extends Ship
  225. {
  226.     import flash.geom.Matrix;
  227.     public static const GRAD_COLORS:Array = [0xffba33, 0xaa0000];
  228.     public static const GRAD_ALPHAS:Array = [11];
  229.     public static const GRAD_RATIOS:Array = [100255];
  230.     private var mGradTrans:Matrix = new Matrix();
  231.     function Multiple()
  232.     {
  233.         super(0);
  234.     }
  235.     public override function draw():void
  236.     {
  237.         var g:Graphics = graphics;
  238.         var r:Number = Math.sin(mCount*0.9)*0.7 + 9;
  239.         mGradTrans.createGradientBox(r*2, r*1.8,0 , -r*1.1, -r*0.9);
  240.         g.clear();
  241.         g.beginGradientFill(GradientType.RADIAL, GRAD_COLORS, GRAD_ALPHAS, GRAD_RATIOS, mGradTrans);
  242.         g.drawEllipse(-r, -r*0.8, r*2, r*1.6);
  243.     g.endFill();
  244.     }
  245. }
  246. class PositionRingBuffer
  247. {
  248.     private var xs:Array;
  249.     private var ys:Array;
  250.     private var length:uint;
  251.     private var pos:int = 0;
  252.     function PositionRingBuffer(len:uint)
  253.     {
  254.         length = len;
  255.         xs = new Array(len);
  256.         ys = new Array(len);
  257.     }
  258.     
  259.     public function push(x:int, y:int, chk:Boolean = true):void {
  260.         var i:int = (pos + length - 1) % length;
  261.         if (chk) {
  262.             if (xs[i] == x && ys[i] == y) return;
  263.         }
  264.         xs[pos] = x;
  265.         ys[pos] = y;
  266.         pos = ++pos % length;
  267.     }
  268.     public function getX(i:int):int {
  269.         i = (pos - i + length) % length;
  270.         return xs[i];
  271.     }
  272.     public function getY(i:int):int {
  273.         i = (pos - i + length) % length;
  274.         return ys[i];
  275.     }
  276. }
  277. class Bullet extends Sprite
  278. {
  279.     public var color:uint;
  280.     public var size:uint;
  281.     public var speed:uint;
  282.     function Bullet(color:uint = 0xeeddaa, size:uint = 3, speed:uint = 20)
  283.     {
  284.         this.color = color;
  285.         this.size = size;
  286.         this.speed = speed;
  287.         
  288.         this.graphics.beginFill(color);
  289.         this.graphics.drawEllipse(-size, -size/2, size*1.8, size);
  290.         this.graphics.drawCircle(-size*1.30, size/2);
  291.         this.graphics.drawCircle(-size*1.80, size/3);
  292.         this.graphics.endFill();
  293.         
  294.         addEventListener(Event.ENTER_FRAME, updateHandler);
  295.     }
  296.     
  297.     private function updateHandler(e:Event):void 
  298.     {
  299.         this.x += speed;
  300.         
  301.         if (this.x + size / 2 > Nemesis.W) {
  302.             this.parent.removeChild(this);
  303.             removeEventListener(Event.ENTER_FRAME, updateHandler);
  304.         }
  305.     }
  306. }
  307. class MountainGen
  308. {
  309.     private var mPrevBuffer:Array;
  310.     private var mHeight:int;
  311.     private var mCount:int = 0;
  312.     private var tmpBuffer:Array;
  313.     private var mGenFunc:Function;
  314.         private var mDark:Boolean;
  315.     function MountainGen(h:int, generator:int = 0, dark:Boolean = false)
  316.     {
  317.                 mDark = dark;
  318.         mHeight = h;
  319.         mGenFunc = generator ? genWav2 : genWav;
  320.         mPrevBuffer = new Array(h);
  321.         tmpBuffer   = new Array(h);
  322.     }
  323.     public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
  324.     {
  325.         var i:int;
  326.         for (i = 0;i < mHeight;i++) {
  327.             if (tmpBuffer[i]) {
  328.                 var c:int = tmpBuffer[i];
  329.                 b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), makeColor(c));
  330.             }
  331.         }        
  332.     }
  333.         private function makeColor(c:int):uint
  334.         {
  335.             if (mDark)
  336.                 return 0xff000000 | (c/7+5) | ((c/7 + 80)<<16) | ((c/6+50) << 8);
  337.             return 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8);
  338.         }
  339.     public function step():void
  340.     {
  341.         var t:Number = Number(mCount) * 0.02;
  342.         var h:int = mGenFunc(t) * mHeight;
  343.         var i:int, k:int, m:int;
  344.         for (i = 0;i < mHeight;i++) {
  345.             mPrevBuffer[i] = tmpBuffer[i];
  346.         }
  347.         
  348.         for (i = 0;i < mHeight;i++) {
  349.             tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
  350.             if (tmpBuffer[i]) {
  351.                 if (mPrevBuffer[i])
  352.                     tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
  353.                 if (mPrevBuffer[i] == 0 || i == (h-1)) {
  354.                     m = 50;
  355.                     for (k = i;k >= 0 && m > 0;k--, m-=4) {
  356.                         if (m > 33) m--;
  357.                         tmpBuffer[k] += m;
  358.                         m += Math.random()*7;
  359.                     }
  360.                 }
  361.                 if (mPrevBuffer[i+1] && i == (h-1)) {
  362.                     m = -48;
  363.                     for (k = i;k >= 0 && m < 0;k--, m++) {
  364.                         tmpBuffer[k] += m;
  365.                         if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
  366.                     }
  367.                 }
  368.            }
  369.         }
  370.        for (i = 0;i < mHeight;i++)
  371.             tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
  372.         mCount++;
  373.     }
  374.     private static function genWav(t:Number, nest:int = 0):Number
  375.     {
  376.         var v:Number = Math.sin(t);
  377.         v += Math.sin(t*3) * 0.1;
  378.         v += Math.cos(0.1 + t*10) * 0.02;
  379.         v *= Math.sin(t*0.1);
  380.         if (nest < 5)
  381.             v += genWav2(t*2.01+nest)*0.5;
  382.         v = v*0.2 + 0.22;
  383.         return (v<0) ? 0 : (v>1) ? 1 : v;
  384.     }
  385.     private static function genWav2(t:Number, nest:int = 0):Number
  386.     {
  387.         var v:Number = Math.sin(t);
  388.         v += Math.cos(t*3) * 0.1;
  389.         v += Math.cos(0.1 + t*9) * 0.02;
  390.         v *= Math.cos(0.2 + t*0.15);
  391.         if (nest < 5)
  392.             v += genWav2(t*2.01+nest)*0.5;
  393.         v = v*0.2 + 0.23;
  394.         return (v<0) ? 0 : (v>1) ? 1 : v;
  395.     }
  396. }
  397. class StarBG extends Sprite
  398. {
  399.     private var mWidth:int;
  400.     private var mHeight:int;
  401.     private var mStars:Array;
  402.     private var mStarVs:Array;
  403.     private var mN:int;
  404.     function StarBG(w:int, h:int, n:int)
  405.     {
  406.         mWidth = w;
  407.         mHeight = h;
  408.         mN = n;
  409.         mStars  = new Array(n);
  410.         mStarVs = new Array(n);
  411.         for (var i:int = 0;i < n;i++) {
  412.             mStars[i] = new Point(int( Math.random()*w ), int( Math.random()*h ));
  413.             mStarVs[i] = Math.random() + 0.2;
  414.         }
  415.     }
  416.     public function tick():void
  417.     {
  418.         var n:int = mN;
  419.         for (var i:int = 0;i < n;i++) {
  420.             mStars[i].x -= Number(mStarVs[i]);
  421.             if (mStars[i].x < 0) {
  422.                 mStars[i].x += mWidth;
  423.                 mStars[i].y = int( Math.random()*mHeight );
  424.             }
  425.         }
  426.     }
  427.     public function draw():void
  428.     {
  429.         var g:Graphics = graphics;
  430.         var n:int = mN;
  431.         g.clear();
  432.         for (var i:int = 0;i < n;i++) {
  433.             g.beginFill(0xffffff);
  434.             g.drawCircle( mStars[i].x, mStars[i].y , 0.4);
  435.         }   
  436.     }
  437. }
noswf

ゲームっぽくしてみたforked from: なんとかディウスっぽい背景 この地形を見てるとSFCaveとかの類を思い出す [diff(373)]

  1. // forked from ton's ゲームっぽくしてみたforked from: なんとかディウスっぽい背景
  2. // forked from gyuque's なんとかディウスっぽい背景
  3. // キーを押すと上昇、離すと下降します
  4. package
  5. {
  6.     import flash.display.*;
  7.     import flash.geom.*;
  8.     import flash.events.*;
  9.     import flash.ui.*;
  10.     [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]
  11.     public class Nemesis extends Sprite
  12.     {
  13.         public static const W:int = 320;
  14.         public static const H:int = 240;
  15.         private var mBGen:MountainGen = new MountainGen(160);
  16.         private var mTGen:MountainGen = new MountainGen(1601);
  17.         private var mScreenBmp:Bitmap;
  18.         private var mScreen:BitmapData = new BitmapData(W, H, false0);
  19.         private var mStarbg:StarBG = new StarBG(W, H, 50);
  20.         private var mBGScreen:BitmapData = new BitmapData(W, H, true0);
  21.         
  22.         private var player:Player = new Player();
  23.         private var isDown:Boolean = false;
  24.         private var action:String;
  25.         private var count:int;
  26.         
  27.         function Nemesis()
  28.         {
  29.             mScreenBmp = new Bitmap(mScreen);
  30.             addChild(mScreenBmp);
  31.             
  32.             player.bmp = new BitmapData(W, H, true0);
  33.             
  34.             var i:int;
  35.             mBGen.step();
  36.             mTGen.step();
  37.             for (i = 0;i < W;i++) {
  38.                 mBGen.step();
  39.                 mTGen.step();
  40.                 mBGen.draw(mBGScreen, i, 80);
  41.                 mTGen.draw(mBGScreen, i, 0false);
  42.             }
  43.             
  44.             addEventListener(Event.ENTER_FRAME, onEnterFrame);
  45.             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
  46.             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
  47.             
  48.             changeAction("play");
  49.         }
  50.         private function onKeyDownHandler(e:KeyboardEvent):void {isDown = true;}
  51.         private function onKeyUpHandler(e:KeyboardEvent):void {isDown = false;}
  52.         
  53.         private function changeAction(str:String):void
  54.         {
  55.             action = str;
  56.             count = -1;
  57.         }
  58.         
  59.         private function onEnterFrame(e:Event):void
  60.         {
  61.             switch(action)
  62.             {
  63.             case "play":
  64.                 play();
  65.                 draw();
  66.                 hitcheck();
  67.                 break;
  68.             case "miss":
  69.                 miss();
  70.                 draw();
  71.                 break;
  72.             }
  73.             
  74.             count++;
  75.         }
  76.         
  77.         private function play():void
  78.         {
  79.             if(count == 0)
  80.             {
  81.                 player.x = 70;
  82.                 player.y = H / 2;
  83.                 player.vx = 3;
  84.                 player.vy = -2;
  85.                 player.visible = true;
  86.             }
  87.             
  88.             mStarbg.tick();
  89.             
  90.             if(isDown == true) {
  91.                 player.vy -= 0.25;
  92.             }
  93.             else {
  94.                 player.vy += 0.25;
  95.             }
  96.             player.y += player.vy;
  97.             
  98.             scroll(player.vx);
  99.         }
  100.         
  101.         private var particles:Array;
  102.         private function miss():void
  103.         {
  104.             if(count == 0)
  105.             {
  106.                 player.visible = false;
  107.                 
  108.                 particles = new Array();
  109.                 for (var i:int = 0; i < 20; i++)
  110.                 {
  111.                     particles[i] = {
  112.                         x : player.x-16 + Math.random()*32,
  113.                         y : player.y-16 + Math.random()*32,
  114.                         vx : -3 + Math.random()*6,
  115.                         vy : -3 + Math.random()*6,
  116.                         size : 30
  117.                     };
  118.                 }
  119.             }
  120.             
  121.             mStarbg.tick();
  122.             
  123.             for each(var obj:Object in particles)
  124.             {
  125.                 obj.x += obj.vx;
  126.                 obj.y += obj.vy;
  127.                 obj.vx /= 1.1;
  128.                 obj.vy /= 1.1;
  129.                 obj.size /= 1.2;
  130.             }
  131.             
  132.             if(count >= 30)
  133.             {
  134.                 particles = new Array();
  135.                 changeAction("play");
  136.             }
  137.         }
  138.         
  139.         private function scroll(vx:Number):void
  140.         {
  141.             player.bmp.scroll(-vx, 0);
  142.             
  143.             mBGScreen.scroll(-vx, 0);
  144.             mBGScreen.fillRect(new Rectangle(W-vx, 0, vx, H), 0);
  145.             
  146.             var i:int;
  147.             mBGen.step();
  148.             mTGen.step();
  149.             
  150.             for (i = 0;i < vx;i++)
  151.             {
  152.                 mBGen.step();
  153.                 mTGen.step();
  154.                 mBGen.draw(mBGScreen, W-vx+i, 80);
  155.                 mTGen.draw(mBGScreen, W-vx+i, 0false);
  156.             }
  157.         }
  158.         
  159.         private function draw():void
  160.         {
  161.             mScreen.fillRect(mScreen.rect, 0);
  162.             
  163.             mStarbg.draw(mScreen);
  164.             player.draw();
  165.             mScreen.copyPixels(player.bmp, player.bmp.rect, new Point(00));
  166.             mScreen.copyPixels(mBGScreen, mScreen.rect, new Point(00));
  167.             
  168.             for each(var obj:Object in particles) {
  169.                 mScreen.fillRect(new Rectangle(obj.x-obj.size/2, obj.y-obj.size/2, obj.size, obj.size), 0xFFFFFF);
  170.             }
  171.         }
  172.         
  173.         private function hitcheck():void
  174.         {
  175.             if(mScreen.getPixel(player.x, player.y) != 0xFFFFFF)
  176.             {
  177.                 changeAction("miss");
  178.             }
  179.         }
  180.     }
  181. }
  182. import flash.display.*;
  183. import flash.events.*;
  184. import flash.geom.*;
  185. import flash.filters.*;
  186. class MountainGen
  187. {
  188.     private var mPrevBuffer:Array;
  189.     private var mHeight:int;
  190.     private var mCount:int = 0;
  191.     private var tmpBuffer:Array;
  192.     private var mGenFunc:Function;
  193.     function MountainGen(h:int, generator:int = 0)
  194.     {
  195.         mHeight = h;
  196.         mGenFunc = generator ? genWav2 : genWav;
  197.         mPrevBuffer = new Array(h);
  198.         tmpBuffer   = new Array(h);
  199.     }
  200.     public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
  201.     {
  202.         var i:int;
  203.         for (i = 0;i < mHeight;i++) {
  204.             if (tmpBuffer[i]) {
  205.                 var c:int = tmpBuffer[i];
  206.                 b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
  207.             }
  208.         }
  209.     }
  210.     public function step():void
  211.     {
  212.         var t:Number = Number(mCount) * 0.02;
  213.         var h:int = mGenFunc(t) * mHeight;
  214.         var i:int, k:int, m:int;
  215.         for (i = 0;i < mHeight;i++) {
  216.             mPrevBuffer[i] = tmpBuffer[i];
  217.         }
  218.         for (i = 0;i < mHeight;i++) {
  219.             tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
  220.             if (tmpBuffer[i]) {
  221.                 if (mPrevBuffer[i])
  222.                     tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
  223.                 if (mPrevBuffer[i] == 0 || i == (h-1)) {
  224.                     m = 50;
  225.                     for (k = i;k >= 0 && m > 0;k--, m-=4) {
  226.                         if (m > 33) m--;
  227.                         tmpBuffer[k] += m;
  228.                         m += Math.random()*7;
  229.                     }
  230.                 }
  231.                 if (mPrevBuffer[i+1] && i == (h-1)) {
  232.                     m = -48;
  233.                     for (k = i;k >= 0 && m < 0;k--, m++) {
  234.                         tmpBuffer[k] += m;
  235.                         if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
  236.                     }
  237.                 }
  238.            }
  239.         }
  240.        for (i = 0;i < mHeight;i++)
  241.             tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
  242.         mCount++;
  243.     }
  244.     private static function genWav(t:Number, nest:int = 0):Number
  245.     {
  246.         var v:Number = Math.sin(t);
  247.         v += Math.cos(t*3) * 0.1;
  248.         v += Math.cos(0.1 + t*10) * 0.02;
  249.         v *= Math.cos(t*0.1);
  250.         if (nest < 5)
  251.             v += genWav(t+1, ++nest);
  252.         v = v*0.2 + 0.3;
  253.         return (v<0) ? 0 : (v>1) ? 1 : v;
  254.     }
  255.     private static function genWav2(t:Number, nest:int = 0):Number
  256.     {
  257.         var v:Number = Math.sin(t);
  258.         v += Math.cos(t*3) * 0.1;
  259.         v += Math.cos(0.1 + t*9) * 0.02;
  260.         v *= Math.cos(0.2 + t*0.15);
  261.         if (nest < 5)
  262.             v += genWav2(t+1, ++nest);
  263.         v = v*0.2 + 0.2;
  264.         return (v<0) ? 0 : (v>1) ? 1 : v;
  265.     }
  266. }
  267. class StarBG
  268. {
  269.     private var mWidth:int;
  270.     private var mHeight:int;
  271.     private var mStars:Array;
  272.     private var mN:int;
  273.     
  274.     private var mCount:int = 0;
  275.     function StarBG(w:int, h:int, n:int)
  276.     {
  277.         mWidth = w;
  278.         mHeight = h;
  279.         mN = n;
  280.         mStars  = new Array(n);
  281.         for (var i:int = 0;i < n;i++) {
  282.             mStars[i] = {
  283.                 x : Math.random()*w, y : Math.random()*h, speed : -Math.random()*3-2,
  284.                 color : ((Math.random()*0xC0+0x40)<<8)+((Math.random()*0xC0+0x40)<<16)+(Math.random()*0xC0+0x40),
  285.                 blink : Math.floor(Math.random())*40+15
  286.             };
  287.         }
  288.     }
  289.     public function tick():void
  290.     {
  291.         var n:int = mN;
  292.         for each(var star:Object in mStars)
  293.         {
  294.             star.x += star.speed;
  295.             
  296.             if(star.x < 0)
  297.             {
  298.                 star.x += mWidth;
  299.                 star.y = Math.random()*mHeight;
  300.                 star.speed = -Math.random()*3-2;
  301.             }
  302.         }
  303.         mCount++;
  304.     }
  305.     public function draw(b:BitmapData):void
  306.     {
  307.         for each(var star:Object in mStars)
  308.         {
  309.             if((mCount % star.blink) == 1) {
  310.                 b.setPixel(star.x, star.y, 0xFFFFFF);
  311.             }
  312.             else {
  313.                 b.setPixel(star.x, star.y, star.color);
  314.             }
  315.         }
  316.     }
  317. }
  318. class Player
  319. {
  320.     public var x:Number;
  321.     public var y:Number;
  322.     public var vx:Number;
  323.     public var vy:Number;
  324.     public var bmp:BitmapData;
  325.     public var visible:Boolean;
  326.     
  327.     public var state:String = "normal";
  328.     
  329.     public function draw():void
  330.     {
  331.         bmp.colorTransform(bmp.rect, new ColorTransform(0.70.90.9810000));
  332.         bmp.applyFilter(bmp, bmp.rect, new Point(00), new BlurFilter(021));
  333.         
  334.         if(visible == true) {
  335.             bmp.fillRect(new Rectangle(x-1, y-Math.abs(vy)/2-2, vx+1, Math.abs(vy)+4), 0xFFFFFFFF);
  336.         }
  337.     }
  338. }
noswf

ゲームっぽくしてみたforked from: なんとかディウスっぽい背景 操作系をよっぱらい方式にしてみた [diff(9)]

  1. // forked from ton's ゲームっぽくしてみたforked from: なんとかディウスっぽい背景
  2. // forked from gyuque's なんとかディウスっぽい背景
  3. // ゲームっぽくしてみた
  4. // 十字キーで移動
  5. // スペースキーで弾発射
  6. // だれか当たり判定つけて><
  7. // 操作系をよっぱらい方式にしてみた
  8. //十字キー上で上昇、ほっとくと下降します
  9. package
  10. {
  11.     import flash.display.*;
  12.     import flash.geom.*;
  13.     import flash.events.*;
  14.     import flash.ui.Keyboard;
  15.     [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]  
  16.     public class Nemesis extends Sprite
  17.     {
  18.         public static const W:int = 320;
  19.         public static const H:int = 240;
  20.         private var mScroll:int = 0;
  21.         private var mMyPos:Point;
  22.         private var mBGen:MountainGen = new MountainGen(160);
  23.         private var mTGen:MountainGen = new MountainGen(1601);
  24.         private var mBGScreen:BitmapData = new BitmapData(W, H, true0);
  25.         private var mBGScreenBmp:Bitmap;
  26.         private var mBGScreenBmp2:Bitmap;
  27.         private var mStarbg:StarBG = new StarBG(W, H, 30);
  28.         
  29.         private var ship:Ship = new Ship(0x00ffff);
  30.         private var speed:int = 4;
  31.         private var isUp:Boolean = false;
  32.         private var isDown:Boolean = false;
  33.         private var isLeft:Boolean = false;
  34.         private var isRight:Boolean = false;
  35.         private var isShot:Boolean = false;
  36.         
  37.         function Nemesis()
  38.         {
  39.             addChild(mStarbg);
  40.             mBGScreenBmp = new Bitmap(mBGScreen);
  41.             addChild(mBGScreenBmp);
  42.             mBGScreenBmp2 = new Bitmap(mBGScreen);
  43.             addChild(mBGScreenBmp2);
  44.             addChild(ship);
  45.             ship.x = 40;
  46.             ship.y = H / 2;
  47.             
  48.             var i:int;
  49.             mBGen.step();
  50.             mTGen.step();
  51.             for (i = 0;i < W;i++) {
  52.                 mBGen.step();
  53.                 mTGen.step();
  54.                 mBGen.draw(mBGScreen, i, 80);
  55.                 mTGen.draw(mBGScreen, i, 0false);
  56.             }
  57.             addEventListener(Event.ENTER_FRAME, tick);
  58.             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
  59.             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
  60.         }
  61.         
  62.         private var _clrrc:Rectangle = new Rectangle(001, H);
  63.         private function tick(e:Event):void
  64.         {
  65.             
  66.             var ox:int = mScroll % W;
  67.             _clrrc.x = ox;
  68.             mBGScreen.fillRect(_clrrc, 0);
  69.             mStarbg.tick();
  70.             mBGen.step();
  71.             mTGen.step();
  72.             mStarbg.draw();
  73.             mBGen.draw(mBGScreen, ox, 80);
  74.             mTGen.draw(mBGScreen, ox, 0false);
  75.             mBGScreenBmp.x = -ox;
  76.             mBGScreenBmp2.x = W-ox;
  77.             mScroll++;
  78.             
  79.             //ship.y -= isUp? speed : 0;
  80.             //ship.y += isDown? speed: 0;
  81.                         //上で上昇、ほっとくと下降
  82.             ship.y -= isUp? speed : -speed;
  83.             //ship.y += isDown? speed: 0;
  84.             ship.x -= isLeft? speed: 0;
  85.             ship.x += isRight? speed: 0;
  86.                         if (isShot && !(mScroll%5)) {
  87.                 var bullet:Bullet = new Bullet(0xff00ff, 320);
  88.                 bullet.x = ship.x;
  89.                 bullet.y = ship.y;
  90.                 addChild(bullet);
  91.             }
  92.             if (ship.x - ship.width< 0) ship.x = ship.width;
  93.             else if (ship.x > W) ship.x = W;
  94.                         if (ship.y - ship.height/2 < 0) ship.y = ship.height/2;
  95.                         else if (ship.y + ship.height/2 > H) ship.y = H - ship.height/2
  96.             
  97.         }
  98.         
  99.         private function onKeyDownHandler(e:KeyboardEvent):void {
  100.             switch(e.keyCode) {
  101.                 case Keyboard.UP: isUp = truebreak;
  102.                 case Keyboard.DOWN: isDown = truebreak;
  103.                 case Keyboard.LEFT: isLeft = truebreak;
  104.                 case Keyboard.RIGHT: isRight = truebreak;
  105.                 case Keyboard.SPACE: isShot = truebreak;
  106.             }
  107.         }
  108.         private function onKeyUpHandler(e:KeyboardEvent):void 
  109.         {
  110.             switch(e.keyCode) {
  111.                 case Keyboard.UP: isUp = falsebreak;
  112.                 case Keyboard.DOWN: isDown = falsebreak;
  113.                 case Keyboard.LEFT: isLeft = falsebreak;
  114.                 case Keyboard.RIGHT: isRight = falsebreak;
  115.                 case Keyboard.SPACE: isShot = falsebreak;
  116.             }            
  117.         }        
  118.     }
  119. }
  120. import flash.display.*;
  121. import flash.events.Event;
  122. import flash.geom.Point;
  123.     
  124. class Ship extends Sprite
  125. {
  126.     public var color:uint;
  127.     function Ship(color:uint)
  128.     {
  129.         this.color = color;
  130.         this.graphics.lineStyle(0, color);
  131.         this.graphics.lineTo( -30, -10);
  132.         this.graphics.lineTo( -3010);
  133.         this.graphics.lineTo(00);
  134.         this.graphics.endFill();
  135.     }
  136. }
  137. class Bullet extends Sprite
  138. {
  139.     public var color:uint;
  140.     public var size:uint;
  141.     public var speed:uint;
  142.     function Bullet(color:uint = 0x0000ff, size:uint = 3, speed:uint = 5)
  143.     {
  144.         this.color = color;
  145.         this.size = size;
  146.         this.speed = speed;
  147.         
  148.         this.graphics.lineStyle(0, color);
  149.         this.graphics.drawCircle(00, size);
  150.         this.graphics.endFill();
  151.         
  152.         addEventListener(Event.ENTER_FRAME, updateHandler);
  153.     }
  154.     
  155.     private function updateHandler(e:Event):void 
  156.     {
  157.         this.x += speed;
  158.         
  159.         if (this.x + size / 2 > Nemesis.W) {
  160.             this.parent.removeChild(this);
  161.             removeEventListener(Event.ENTER_FRAME, updateHandler);
  162.         }
  163.     }
  164. }
  165. class MountainGen
  166. {
  167.     private var mPrevBuffer:Array;
  168.     private var mHeight:int;
  169.     private var mCount:int = 0;
  170.     private var tmpBuffer:Array;
  171.     private var mGenFunc:Function;
  172.     function MountainGen(h:int, generator:int = 0)
  173.     {
  174.         mHeight = h;
  175.         mGenFunc = generator ? genWav2 : genWav;
  176.         mPrevBuffer = new Array(h);
  177.         tmpBuffer   = new Array(h);
  178.     }
  179.     public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
  180.     {
  181.         var i:int;
  182.         for (i = 0;i < mHeight;i++) {
  183.             if (tmpBuffer[i]) {
  184.                 var c:int = tmpBuffer[i];
  185.                 b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
  186.             }
  187.         }        
  188.     }
  189.     public function step():void
  190.     {
  191.         var t:Number = Number(mCount) * 0.02;
  192.         var h:int = mGenFunc(t) * mHeight;
  193.         var i:int, k:int, m:int;
  194.         for (i = 0;i < mHeight;i++) {
  195.             mPrevBuffer[i] = tmpBuffer[i];
  196.         }
  197.         
  198.         for (i = 0;i < mHeight;i++) {
  199.             tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
  200.             if (tmpBuffer[i]) {
  201.                 if (mPrevBuffer[i])
  202.                     tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
  203.                 if (mPrevBuffer[i] == 0 || i == (h-1)) {
  204.                     m = 50;
  205.                     for (k = i;k >= 0 && m > 0;k--, m-=4) {
  206.                         if (m > 33) m--;
  207.                         tmpBuffer[k] += m;
  208.                         m += Math.random()*7;
  209.                     }
  210.                 }
  211.                 if (mPrevBuffer[i+1] && i == (h-1)) {
  212.                     m = -48;
  213.                     for (k = i;k >= 0 && m < 0;k--, m++) {
  214.                         tmpBuffer[k] += m;
  215.                         if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
  216.                     }
  217.                 }
  218.            }
  219.         }
  220.        for (i = 0;i < mHeight;i++)
  221.             tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
  222.         mCount++;
  223.     }
  224.     private static function genWav(t:Number, nest:int = 0):Number
  225.     {
  226.         var v:Number = Math.sin(t);
  227.         v += Math.cos(t*3) * 0.1;
  228.         v += Math.cos(0.1 + t*10) * 0.02;
  229.         v *= Math.cos(t*0.1);
  230.         if (nest < 5)
  231.             v += genWav(t+1, ++nest);
  232.         v = v*0.2 + 0.3;
  233.         return (v<0) ? 0 : (v>1) ? 1 : v;
  234.     }
  235.     private static function genWav2(t:Number, nest:int = 0):Number
  236.     {
  237.         var v:Number = Math.sin(t);
  238.         v += Math.cos(t*3) * 0.1;
  239.         v += Math.cos(0.1 + t*9) * 0.02;
  240.         v *= Math.cos(0.2 + t*0.15);
  241.         if (nest < 5)
  242.             v += genWav2(t+1, ++nest);
  243.         v = v*0.2 + 0.2;
  244.         return (v<0) ? 0 : (v>1) ? 1 : v;
  245.     }
  246. }
  247. class StarBG extends Sprite
  248. {
  249.     private var mWidth:int;
  250.     private var mHeight:int;
  251.     private var mStars:Array;
  252.     private var mStarVs:Array;
  253.     private var mN:int;
  254.     function StarBG(w:int, h:int, n:int)
  255.     {
  256.         mWidth = w;
  257.         mHeight = h;
  258.         mN = n;
  259.         mStars  = new Array(n);
  260.         mStarVs = new Array(n);
  261.         for (var i:int = 0;i < n;i++) {
  262.             mStars[i] = new Point(int( Math.random()*w ), int( Math.random()*h ));
  263.             mStarVs[i] = Math.random() + 0.2;
  264.         }
  265.     }
  266.     public function tick():void
  267.     {
  268.         var n:int = mN;
  269.         for (var i:int = 0;i < n;i++) {
  270.             mStars[i].x -= Number(mStarVs[i]);
  271.             if (mStars[i].x < 0) {
  272.                 mStars[i].x += mWidth;
  273.                 mStars[i].y = int( Math.random()*mHeight );
  274.             }
  275.         }
  276.     }
  277.     public function draw():void
  278.     {
  279.         var g:Graphics = graphics;
  280.         var n:int = mN;
  281.         g.clear();
  282.         for (var i:int = 0;i < n;i++) {
  283.             g.beginFill(0xffffff);
  284.             g.drawCircle( mStars[i].x, mStars[i].y , 0.4);
  285.         }   
  286.     }
  287. }
noswf
Get Adobe Flash Player