开发者

AS3 laser weapon

I am pretty new to action script 3 (I did a little bit in as2) and i am trying to create a laser gun that rotates towards the mouse and shoots when the mouse is fired.

kind of like this but in开发者_JAVA技巧 as3

http://www.freeactionscript.com/2009/04/laser-hitting-solid-objects-walls/

Thanks, Thor


You can start to play with something like this:

//adding listener to run all the time
m.addEventListener("enterFrame", runGame);
//listener for mouse is down
stage.addEventListener("mouseDown", md);
//listener for mouse is up
stage.addEventListener("mouseUp", mu);

//to know if mouse is down
var _fire:Boolean = false;

//function for all the time
function runGame(evt:*):void
{
    //to know the angle where the mouse is from the "canon" in radians
    var angle:Number = Math.atan2(stage.mouseY - m.y, stage.mouseX - m.x);

    //set the canon's rotation
    m.rotation = 180 * angle / Math.PI;

    //if mouse us down -> fire
    if(_fire)
    {
        //create a point far away, so it will always work if the screen is normal
        var point:Point = Point.polar(10000, angle);

        //shoot the laser
        graphics.lineTo(point.x, point.y);
    }
}

//when mouse is down
function md(evt:*):void
{
    //prepare graphics
    graphics.clear();
    graphics.lineStyle(2, 0xff0000);
    graphics.moveTo(m.x, m.y);

    //set fire to true
    _fire = true;
}

//when mouse is up
function mu(evt:*):void
{
    //set fire to false
    _fire = false;

    //clear the laser
    graphics.clear();
}

Create a new project, place a movieclip on the stage, name it "m" (without the quotes ;)). Paste the script where the actionscript goes on frame 1.

If you want the laser to follow the mouse when it's down, change

runGame function to this:

function runGame(evt:*):void
{
    //to know the angle where the mouse is from the "canon" in radians
    var angle:Number = Math.atan2(stage.mouseY - m.y, stage.mouseX - m.x);

    //set the canon's rotation
    m.rotation = 180 * angle / Math.PI;

    //if mouse us down -> fire
    if(_fire)
    {
        //create a point far away, so it will always work if the screen is normal
        var point:Point = Point.polar(10000, angle);

        //shoot the laser
        graphics.clear();
        graphics.lineStyle(2, 0xff0000);
        graphics.moveTo(m.x, m.y);
        graphics.lineTo(point.x, point.y);
    }
}

and md function to this:

//when mouse is down
function md(evt:*):void
{
    //set fire to true
    _fire = true;
}


"Epic" laser, with source. Also great site btw.


Probably best to learn the basic concepts of programming before trying to tackle things like this. Cutting/Pasting code is not programming, and can have frankenstein-ish results.

There is no magical shortcut to programming, you need to learn the basic concepts and build on them. Wonderfl.net is a cool place to check out, but I'd suggest starting out far more basic concepts to start. Until you do that, it's all going to appear as voodoo to you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜