forked from: しょぼいホーミングレーザー - HOMING LASER
マウスの後を追いかけます。ちょっと挙動が怪しい…。
// forked from rsakane's しょぼいホーミングレーザー - HOMING LASER
package
{
/*
* マウスの後を追いかけます。ちょっと挙動が怪しい…。
*/
import flash.display.Sprite
import flash.events.Event;
public class Main extends Sprite
{
private var bullets:Vector.<HomingLaser> = new Vector.<HomingLaser>();
public function Main()
{
for (var i:int = 0; i < 5; i++)
{
var laser:HomingLaser = new HomingLaser();
bullets.push(laser);
addChild(laser);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void
{
for (var i:int = 0; i < bullets.length; i++)
{
bullets[i].move();
}
}
}
}
import flash.display.Sprite;
class Bullet extends Sprite
{
public function Bullet()
{
graphics.beginFill(0xFF57A8);
graphics.drawCircle(0, 0, 20);
graphics.endFill();
}
}
class HomingLaser extends Sprite
{
private var speed:Number = Math.random() * 5 + 2;
private var laser:Vector.<Bullet> = new Vector.<Bullet>();
private var deg:Number = 0;
public function HomingLaser()
{
var xx:int = Math.random() * 465;
var yy:int = Math.random() * 465;
var length:int = Math.random() * 20 + 20;
for (var i:int = 0; i < length; i++)
{
var bullet:Sprite = new Bullet();
bullet.x = xx;
bullet.y = yy;
bullet.alpha = 1.0 / length * (length - i);
addChild(bullet);
laser.push(bullet);
}
}
public function move():void
{
for (var i:int = laser.length - 1; i >= 1; i--)
{
laser[i].x = laser[i - 1].x;
laser[i].y = laser[i - 1].y;
}
var degree:Number = Math.atan2(mouseY - laser[0].y, mouseX - laser[0].x) / (Math.PI / 180);
if (degree < 0) degree += 360;
if (deg - degree >= 180 || (deg - degree < 0 && deg - degree > -180))
{
deg = (deg + 3) % 360;
}
else
{
deg -= 3;
if (deg < 0) deg += 360
}
laser[0].x += Math.cos(deg * Math.PI / 180) * speed;
laser[0].y += Math.sin(deg * Math.PI / 180) * speed;
}
}