弾を自然に消す?
forked from クラスを上限まで管理 (diff: 23)
ActionScript3 source code
/**
* Copyright aaaaaz025 ( http://wonderfl.net/user/aaaaaz025 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/eC0k
*/
// forked from aaaaaz025's クラスを上限まで管理
package
{
import flash.display.AVM1Movie;
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
private var bullets:Array;
private const MAX:int = 100; //省略化・上限
public function Main()
{
bullets = new Array();
for (var i:int = 0; i < MAX; i++) //100の弾種を管理
{
var bullet:Bullet = new Bullet(0x0, 10, 232, 232);
addChild(bullet);
bullets.push(bullet);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void
{
for (var i:int = 0; i < bullets.length; i++)
{
bullets[i].move();
if (bullets[i].check())
{
removeChild(bullets[i]);
bullets.splice(i--, 1);
}
}
}
}
}
import flash.display.Sprite;
class Bullet extends Sprite //こっちで定義してpublic class Main extends Spriteで読み込む
{
public function Bullet(color:int, radius:int, x:int, y:int)
{
graphics.beginFill(color);
graphics.drawCircle(0, 0, radius);
graphics.endFill();
this.x = x;
this.y = y;
}
public function move():void
{
this.x += 2;
this.y += 2;
}
public function out():Boolean
{
if (x < -50 || stage.stageWidth + 50 < x ||
y < -50 || stage.stageHeight + 50 < y)
{
return true;
}
return false;
}
}
