※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!
wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)
some japanese sidescrolling tunnel
なんとかディウスっぽい背景 なんとかディウスっぽい蟹さん forked from: なんとかディウスっぽい背景
- // forked from gyuque's なんとかディウスっぽい背景
- // 左右キーとスペースで操作できます
- package
- {
- import flash.display.*;
- import flash.geom.*;
- import flash.events.*;
- import flash.ui.*;
- [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]
- public class Nemesis extends Sprite
- {
- public static const W:int = 320;
- public static const H:int = 240;
- private var mBGen:MountainGen = new MountainGen(80);
- private var mTGen:MountainGen = new MountainGen(80, 1);
- private var mScreenBmp:Bitmap;
- private var mScreen:BitmapData = new BitmapData(W, H, false, 0);
- private var mBGScreen:BitmapData = new BitmapData(W, H, true, 0);
- private var mStarbg:StarBG = new StarBG(W, H, 50);
- private var mKani:Kani;
- private var legs:Array = new Array();
- private var count:int = 0;
- function Nemesis()
- {
- mScreenBmp = new Bitmap(mScreen);
- addChild(mScreenBmp);
- mBGen.step();
- mTGen.step();
- for(var i:int = 0; i < W; i++)
- {
- mBGen.step();
- mTGen.step();
- mBGen.draw(mBGScreen, i, 160);
- mTGen.draw(mBGScreen, i, 0, false);
- }
- legs.push(new Leg(-80, 1));
- legs.push(new Leg( 0, 1));
- legs.push(new Leg( 80, 1));
- legs.push(new Leg(-80, -1));
- legs.push(new Leg( 0, -1));
- legs.push(new Leg( 80, -1));
- mKani = new Kani(legs);
- addEventListener(Event.ENTER_FRAME, tick);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, Key.onKeyDownHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, Key.onKeyUpHandler);
- }
- private function tick(e:Event):void
- {
- var leg:Leg;
- mStarbg.main();
- mKani.main();
- if(count % 2 == 0) {scroll(1);}
- count++;
- //描画
- mScreen.fillRect(mScreen.rect, 0);
- mStarbg.draw(mScreen);
- var matrix:Matrix = new Matrix();
- for each(leg in legs)
- {
- matrix.translate(leg.x, leg.y);
- mScreen.draw(leg.sprite, matrix);
- matrix.identity();
- }
- matrix.translate(mKani.x, mKani.y);
- mScreen.draw(mKani, matrix);
- mScreen.copyPixels(mBGScreen, mScreen.rect, new Point(0, 0));
- //当たり判定
- for each(leg in legs) {
- leg.hitflag = mBGScreen.getPixel32(leg.x, leg.y) != 0x00000000;
- }
- }
- public function scroll(vx:int):void
- {
- mBGScreen.scroll(-vx, 0);
- mBGScreen.fillRect(new Rectangle(W-vx, 0, vx, H), 0);
- var i:int;
- mBGen.step();
- mTGen.step();
- for (i = 0; i < vx; i++)
- {
- mBGen.step();
- mTGen.step();
- mBGen.draw(mBGScreen, W-vx+i, 160);
- mTGen.draw(mBGScreen, W-vx+i, 0, false);
- }
- mKani.x -= vx;
- for each(var leg:Leg in legs) {leg.x -= vx;}
- }
- }
- }
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- import flash.ui.*;
- class Kani extends Sprite
- {
- public var body:Body = new Body();
- public var legs:Array = new Array();
- public var auto:Boolean;
- public var dir:String = "none";
- public var timer:int;
- public var dance:int;
- function Kani(legs:Array)
- {
- x = 200;
- y = 120;
- auto = false;
- timer = 100;
- this.legs = legs;
- for each(var leg:Leg in legs)
- {
- leg.parent = this;
- leg.x = x+leg.offset - 20+Math.random()*40;
- leg.y = 120 + 100*leg.invert;
- }
- addChild(body);
- }
- public function main():void
- {
- var leg:Leg;
- if(auto == false)
- {
- if(Key.isLeft == true) {dir = "left"; timer = 90;}
- else if(Key.isRight == true) {dir = "right"; timer = 90;}
- else {dir = "none";}
- if(Key.isSpace == true && dance == 0) {dance = 20; timer = 90;}
- timer--;
- if(timer == 0) {auto = true;}
- }
- if(auto == true)
- {
- if(timer == 0)
- {
- if(dir == "none")
- {
- if(x < 160) {dir = "right";}
- else {dir = "left";}
- }
- else {
- if(x < 50 && dir != "right") {
- timer = 60;
- }
- if(x > 300 && dir != "left") {
- timer = 60;
- }
- }
- }
- else {
- dir = "none";
- if(timer == 40) {
- dance = 20;
- }
- timer--;
- }
- if(Key.isLeft == true || Key.isRight == true)
- {
- auto = false;
- timer = 90;
- }
- }
- if(dir == "left") {x -= 2;}
- if(dir == "right") {x += 2;}
- if(dir != "none") {
- for each(leg in legs) {
- leg.move(dir);
- }
- }
- if(dance > 0)
- {
- if(dance > 15) {body.x = 2;}
- else if(dance > 10) {body.x = 0;}
- else if(dance > 5) {body.x = -2;}
- else {body.x = 0;}
- dance--;
- }
- graphics.clear();
- for each(leg in legs)
- {
- graphics.lineStyle(6, 0xFF80FF);
- graphics.moveTo(leg.offset/8, 10*leg.invert);
- graphics.lineTo((leg.x-x), (leg.y-y)-70*leg.invert);
- graphics.endFill();
- }
- }
- }
- class Body extends Sprite
- {
- function Body()
- {
- graphics.beginFill(0xC060C0);
- graphics.lineStyle(2, 0xFF80FF);
- graphics.drawRect(-15, -15, 30, 30);
- graphics.endFill();
- }
- }
- class Leg
- {
- public var parent:Kani;
- public var sprite:Sprite;
- public var x:Number;
- public var y:Number;
- public var offset:Number;
- public var invert:int;
- public var hitflag:Boolean;
- public var moveflag:Boolean;
- public var gear:int;
- function Leg(offset:Number, invert:int)
- {
- this.offset = offset;
- this.invert = invert;
- sprite = new Sprite();
- sprite.graphics.beginFill(0xC060C0);
- sprite.graphics.lineStyle(0, 0xFF80FF);
- sprite.graphics.lineTo(-5, -40*invert);
- sprite.graphics.lineTo(-5, -60*invert);
- sprite.graphics.lineTo(-2, -70*invert);
- sprite.graphics.lineTo(2, -70*invert);
- sprite.graphics.lineTo(5, -60*invert);
- sprite.graphics.lineTo(5, -40*invert);
- sprite.graphics.lineTo(0, 0);
- sprite.graphics.endFill();
- }
- public function move(dir:String):void
- {
- var threshold_l:Number = parent.x+offset + 30;
- var threshold_r:Number = parent.x+offset - 30;
- if(moveflag == false) {
- if(threshold_l < x || threshold_r > x)
- {
- moveflag = true;
- gear = -12;
- }
- if(threshold_r > x)
- {
- moveflag = true;
- gear = 12;
- }
- }
- if(moveflag == true)
- {
- if(dir == "left" && threshold_l-50 < x)
- {
- x -= 4;
- if(gear < 0) {
- y -= 4 * invert;
- }
- else {
- y += 4 * invert;
- if(hitflag == true) {
- moveflag = false;
- }
- if(y < 0 || y > 240) {
- gear = -12;
- }
- }
- gear++;
- }
- else if(dir == "right" && threshold_r+50 > x)
- {
- x += 4;
- if(gear > 0) {
- y -= 4 * invert;
- }
- else {
- y += 4 * invert;
- if(hitflag == true) {
- moveflag = false;
- }
- if(y < 0 || y > 240) {
- gear = 12;
- }
- }
- gear--;
- }
- }
- }
- }
- class StarBG
- {
- private var mWidth:int;
- private var mHeight:int;
- private var mStars:Array;
- private var mN:int;
- private var mCount:int = 0;
- function StarBG(w:int, h:int, n:int)
- {
- mWidth = w;
- mHeight = h;
- mN = n;
- mStars = new Array(n);
- for (var i:int = 0;i < n;i++) {
- mStars[i] = {
- x : Math.random()*w, y : Math.random()*h, speed : -Math.random()*1.5-0.5,
- color : ((Math.random()*0xC0+0x40)<<8)+((Math.random()*0xC0+0x40)<<16)+(Math.random()*0xC0+0x40),
- blink : Math.floor(Math.random())*40+20
- };
- }
- }
- public function main():void
- {
- var n:int = mN;
- for each(var star:Object in mStars)
- {
- star.x += star.speed;
- if(star.x < 0)
- {
- star.x += mWidth;
- star.y = Math.random()*mHeight;
- star.speed = -Math.random()*1.5-0.5;
- }
- }
- mCount++;
- }
- public function draw(b:BitmapData):void
- {
- for each(var star:Object in mStars)
- {
- if((mCount % star.blink) == 1) {b.setPixel(star.x, star.y, 0xFFFFFF);}
- else {b.setPixel(star.x, star.y, star.color);}
- }
- }
- }
- class Key
- {
- public static var isLeft:Boolean = false;
- public static var isRight:Boolean = false;
- public static var isSpace:Boolean = false;
- public static function onKeyDownHandler(e:KeyboardEvent):void
- {
- switch(e.keyCode) {
- case Keyboard.LEFT: Key.isLeft = true; break;
- case Keyboard.RIGHT: Key.isRight = true; break;
- case Keyboard.SPACE: Key.isSpace = true; break;
- }
- }
- public static function onKeyUpHandler(e:KeyboardEvent):void
- {
- switch(e.keyCode) {
- case Keyboard.LEFT: Key.isLeft = false; break;
- case Keyboard.RIGHT: Key.isRight = false; break;
- case Keyboard.SPACE: Key.isSpace = false; break;
- }
- }
- }
- class MountainGen
- {
- private var mPrevBuffer:Array;
- private var mHeight:int;
- private var mCount:int = 100;
- private var tmpBuffer:Array;
- private var mGenFunc:Function;
- function MountainGen(h:int, generator:int = 0)
- {
- mHeight = h;
- mGenFunc = generator ? genWav2 : genWav;
- mPrevBuffer = new Array(h);
- tmpBuffer = new Array(h);
- }
- public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
- {
- var i:int;
- for (i = 0;i < mHeight;i++) {
- if (tmpBuffer[i]) {
- var c:int = tmpBuffer[i];
- b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
- }
- }
- }
- public function step():void
- {
- var t:Number = Number(mCount) * 0.02;
- var h:int = mGenFunc(t) * mHeight;
- var i:int, k:int, m:int;
- for (i = 0;i < mHeight;i++) {
- mPrevBuffer[i] = tmpBuffer[i];
- }
- for (i = 0;i < mHeight;i++) {
- tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
- if (tmpBuffer[i]) {
- if (mPrevBuffer[i])
- tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
- if (mPrevBuffer[i] == 0 || i == (h-1)) {
- m = 50;
- for (k = i;k >= 0 && m > 0;k--, m-=4) {
- if (m > 33) m--;
- tmpBuffer[k] += m;
- m += Math.random()*7;
- }
- }
- if (mPrevBuffer[i+1] && i == (h-1)) {
- m = -48;
- for (k = i;k >= 0 && m < 0;k--, m++) {
- tmpBuffer[k] += m;
- if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
- }
- }
- }
- }
- for (i = 0;i < mHeight;i++)
- tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
- mCount++;
- }
- private static function genWav(t:Number, nest:int = 0):Number
- {
- var v:Number = Math.sin(t);
- v += Math.cos(t*3) * 0.1;
- v += Math.cos(0.1 + t*10) * 0.02;
- v *= Math.cos(t*0.1);
- if (nest < 5)
- v += genWav(t+1, ++nest);
- v = v*0.2 + 0.3;
- return (v<0) ? 0 : (v>1) ? 1 : v;
- }
- private static function genWav2(t:Number, nest:int = 0):Number
- {
- var v:Number = Math.sin(t);
- v += Math.cos(t*3) * 0.1;
- v += Math.cos(0.1 + t*9) * 0.02;
- v *= Math.cos(0.2 + t*0.15);
- if (nest < 5)
- v += genWav2(t+1, ++nest);
- v = v*0.2 + 0.2;
- return (v<0) ? 0 : (v>1) ? 1 : v;
- }
- }
なんとかディウスっぽい背景 ゲームっぽくしてみたforked from: なんとかディウスっぽい背景
- // forked from gyuque's なんとかディウスっぽい背景
- // ゲームっぽくしてみた
- // 十字キーで移動
- // スペースキーで弾発射
- // だれか当たり判定つけて><
- package
- {
- import flash.display.*;
- import flash.geom.*;
- import flash.events.*;
- import flash.ui.Keyboard;
- [SWF(width="320", height="240", backgroundColor="0x000000", frameRate="30")]
- public class Nemesis extends Sprite
- {
- public static const W:int = 320;
- public static const H:int = 240;
- private var mScroll:int = 0;
- private var mMyPos:Point;
- private var mBGen:MountainGen = new MountainGen(160);
- private var mTGen:MountainGen = new MountainGen(160, 1);
- private var mBGScreen:BitmapData = new BitmapData(W, H, true, 0);
- private var mBGScreenBmp:Bitmap;
- private var mBGScreenBmp2:Bitmap;
- private var mStarbg:StarBG = new StarBG(W, H, 30);
- private var ship:Ship = new Ship(0x00ffff);
- private var speed:int = 4;
- private var isUp:Boolean = false;
- private var isDown:Boolean = false;
- private var isLeft:Boolean = false;
- private var isRight:Boolean = false;
- private var isShot:Boolean = false;
- function Nemesis()
- {
- addChild(mStarbg);
- mBGScreenBmp = new Bitmap(mBGScreen);
- addChild(mBGScreenBmp);
- mBGScreenBmp2 = new Bitmap(mBGScreen);
- addChild(mBGScreenBmp2);
- addChild(ship);
- ship.x = 40;
- ship.y = H / 2;
- var i:int;
- mBGen.step();
- mTGen.step();
- for (i = 0;i < W;i++) {
- mBGen.step();
- mTGen.step();
- mBGen.draw(mBGScreen, i, 80);
- mTGen.draw(mBGScreen, i, 0, false);
- }
- addEventListener(Event.ENTER_FRAME, tick);
- stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
- stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
- }
- private var _clrrc:Rectangle = new Rectangle(0, 0, 1, H);
- private function tick(e:Event):void
- {
- var ox:int = mScroll % W;
- _clrrc.x = ox;
- mBGScreen.fillRect(_clrrc, 0);
- mStarbg.tick();
- mBGen.step();
- mTGen.step();
- mStarbg.draw();
- mBGen.draw(mBGScreen, ox, 80);
- mTGen.draw(mBGScreen, ox, 0, false);
- mBGScreenBmp.x = -ox;
- mBGScreenBmp2.x = W-ox;
- mScroll++;
- ship.y -= isUp? speed : 0;
- ship.y += isDown? speed: 0;
- ship.x -= isLeft? speed: 0;
- ship.x += isRight? speed: 0;
- if (isShot && !(mScroll%5)) {
- var bullet:Bullet = new Bullet(0xff00ff, 3, 20);
- bullet.x = ship.x;
- bullet.y = ship.y;
- addChild(bullet);
- }
- if (ship.x - ship.width< 0) ship.x = ship.width;
- else if (ship.x > W) ship.x = W;
- if (ship.y - ship.height/2 < 0) ship.y = ship.height/2;
- else if (ship.y + ship.height/2 > H) ship.y = H - ship.height/2;
- }
- private function onKeyDownHandler(e:KeyboardEvent):void {
- switch(e.keyCode) {
- case Keyboard.UP: isUp = true; break;
- case Keyboard.DOWN: isDown = true; break;
- case Keyboard.LEFT: isLeft = true; break;
- case Keyboard.RIGHT: isRight = true; break;
- case Keyboard.SPACE: isShot = true; break;
- }
- }
- private function onKeyUpHandler(e:KeyboardEvent):void
- {
- switch(e.keyCode) {
- case Keyboard.UP: isUp = false; break;
- case Keyboard.DOWN: isDown = false; break;
- case Keyboard.LEFT: isLeft = false; break;
- case Keyboard.RIGHT: isRight = false; break;
- case Keyboard.SPACE: isShot = false; break;
- }
- }
- }
- }
- import flash.display.*;
- import flash.events.Event;
- import flash.geom.Point;
- class Ship extends Sprite
- {
- public var color:uint;
- function Ship(color:uint)
- {
- this.color = color;
- this.graphics.lineStyle(0, color);
- this.graphics.lineTo( -30, -10);
- this.graphics.lineTo( -30, 10);
- this.graphics.lineTo(0, 0);
- this.graphics.endFill();
- }
- }
- class Bullet extends Sprite
- {
- public var color:uint;
- public var size:uint;
- public var speed:uint;
- function Bullet(color:uint = 0x0000ff, size:uint = 3, speed:uint = 5)
- {
- this.color = color;
- this.size = size;
- this.speed = speed;
- this.graphics.lineStyle(0, color);
- this.graphics.drawCircle(0, 0, size);
- this.graphics.endFill();
- addEventListener(Event.ENTER_FRAME, updateHandler);
- }
- private function updateHandler(e:Event):void
- {
- this.x += speed;
- if (this.x + size / 2 > Nemesis.W) {
- this.parent.removeChild(this);
- removeEventListener(Event.ENTER_FRAME, updateHandler);
- }
- }
- }
- class MountainGen
- {
- private var mPrevBuffer:Array;
- private var mHeight:int;
- private var mCount:int = 0;
- private var tmpBuffer:Array;
- private var mGenFunc:Function;
- function MountainGen(h:int, generator:int = 0)
- {
- mHeight = h;
- mGenFunc = generator ? genWav2 : genWav;
- mPrevBuffer = new Array(h);
- tmpBuffer = new Array(h);
- }
- public function draw(b:BitmapData, x:int, y:int, rev:Boolean = true):void
- {
- var i:int;
- for (i = 0;i < mHeight;i++) {
- if (tmpBuffer[i]) {
- var c:int = tmpBuffer[i];
- b.setPixel32(x, rev ? (y+mHeight-i) : (y+i), 0xff000000 | (c/3+11) | ((c/5 + 170)<<16) | ((c/2+60) << 8));
- }
- }
- }
- public function step():void
- {
- var t:Number = Number(mCount) * 0.02;
- var h:int = mGenFunc(t) * mHeight;
- var i:int, k:int, m:int;
- for (i = 0;i < mHeight;i++) {
- mPrevBuffer[i] = tmpBuffer[i];
- }
- for (i = 0;i < mHeight;i++) {
- tmpBuffer[i] = (i < h) ? (Math.random()*80 + 80) : 0;
- if (tmpBuffer[i]) {
- if (mPrevBuffer[i])
- tmpBuffer[i] = (tmpBuffer[i] + mPrevBuffer[i]*7)/8;
- if (mPrevBuffer[i] == 0 || i == (h-1)) {
- m = 50;
- for (k = i;k >= 0 && m > 0;k--, m-=4) {
- if (m > 33) m--;
- tmpBuffer[k] += m;
- m += Math.random()*7;
- }
- }
- if (mPrevBuffer[i+1] && i == (h-1)) {
- m = -48;
- for (k = i;k >= 0 && m < 0;k--, m++) {
- tmpBuffer[k] += m;
- if (tmpBuffer[k]<1) tmpBuffer[k] = 1;
- }
- }
- }
- }
- for (i = 0;i < mHeight;i++)
- tmpBuffer[i] = (tmpBuffer[i] < 0) ? 0 : (tmpBuffer[i] > 255) ? 255 : tmpBuffer[i];
- mCount++;
- }
- private static function genWav(t:Number, nest:int = 0):Number
- {
- var v:Number = Math.sin(t);
- v += Math.cos(t*3) * 0.1;
- v += Math.cos(0.1 + t*10) * 0.02;
- v *= Math.cos(t*0.1);
- if (nest < 5)
- v += genWav(t+1, ++nest);
- v = v*0.2 + 0.3;
- return (v<0) ? 0 : (v>1) ? 1 : v;
- }
- private static function genWav2(t:Number, nest:int = 0):Number
- {
- var v:Number = Math.sin(t);
- v += Math.cos(t*3) * 0.1;
- v += Math.cos(0.1 + t*9) * 0.02;
- v *= Math.cos(0.2 + t*0.15);
- if (nest < 5)
- v += genWav2(t+1, ++nest);
- v = v*0.2 + 0.2;
- return (v<0) ? 0 : (v>1) ? 1 : v;
- }
- }
- class StarBG extends Sprite
- {
- private var mWidth:int;
- private var mHeight:int;
- private var mStars:Array;
- private var mStarVs:Array;
- private var mN:int;
- function StarBG(w:int, h:int, n:int)
- {
- mWidth = w;
- mHeight = h;
- mN = n;
- mStars = new Array(n);
- mStarVs = new Array(n);
- for (var i:int = 0;i < n;i++) {
- mStars[i] = new Point(int( Math.random()*w ), int( Math.random()*h ));
- mStarVs[i] = Math.random() + 0.2;
- }
- }
- public function tick():void
- {
- var n:int = mN;
- for (var i:int = 0;i < n;i++) {
- mStars[i].x -= Number(mStarVs[i]);
- if (mStars[i].x < 0) {
- mStars[i].x += mWidth;
- mStars[i].y = int( Math.random()*mHeight );
- }
- }
- }
- public function draw():void
- {
- var g:Graphics = graphics;
- var n:int = mN;
- g.clear();
- for (var i:int = 0;i < n;i++) {
- g.beginFill(0xffffff);
- g.drawCircle( mStars[i].x, mStars[i].y , 0.4);
- }
- }
- }
notice: 


