当我移动时,Actionscript 3.0角色也会射击

时间:2014-02-11 15:54:11

标签: flash actionscript

我不得不为学校制作这个简单的游戏,但作为一名设计师,我并不擅长这种东西。

问题在于,当我按下空格键时我发射的子弹也会在我向上或向下移动时射出子弹,我不想这样做。我知道这可能是一些愚蠢的错误,但请帮助我。我的游戏是像空间射击游戏那样的侧卷轴游戏。

此外,我想在拍摄子弹时拍摄动画,但它不会显示,我添加的拍摄动画gotoAndstop(4);

以下是我的所有代码:

import flash.display.MovieClip;
import flash.sensors.Accelerometer;
import flash.events.Event;

var links:Boolean = false;
var rechts:Boolean = false;
var snelheid:int = 0;
var enemyy:MovieClip;



var enemies:MovieClip=new MovieClip();
stage.addChild(enemies);
for (var teller:int=1; teller<=20; teller++)
{
    enemyy=new Blueenemy();
    enemies.addChild(enemyy);
    enemyy.x = 250 + 170 * teller + Math.round(Math.random() * 30);
    enemyy.y = 50+ Math.round(300*Math.random());
}
stage.addEventListener(Event.ENTER_FRAME,altijd);
function altijd(evt:Event)
{
    enemies.x -=  10;
}






stage.addEventListener(KeyboardEvent.KEY_DOWN,toets);
stage.addEventListener(KeyboardEvent.KEY_UP,toets);
main_mc.addEventListener(Event.ENTER_FRAME,lopen);
function toets(evt:KeyboardEvent):void
{
    (evt.keyCode == Keyboard.SPACE);
    {

        var bullet:Bullet=new Bullet();
        bullet.x = main_mc.x + 37;
        bullet.y = main_mc.y + -10;
        stage.addChild(bullet);
        bullet.addEventListener(Event.ENTER_FRAME,beweeg);
        function beweeg(evt:Event)
        {
            bullet.x +=  15;

        }
    };
    if (evt.keyCode == 38)
    {

        if (evt.type == "keyDown")
        {
            links = true;
            main_mc.gotoAndStop(3);
            snelheid = -15;
        }
        else
        {
            links = false;
        }
    }
    if (evt.keyCode == 40)
    {
        if (evt.type == "keyDown")
        {
            rechts = true;
            main_mc.gotoAndStop(2);
            snelheid = 15;
        }
        else
        {
            rechts = false;
        }
    }
}
function lopen(evt:Event):void
{
    main_mc.y +=  snelheid;
    if (! links && ! rechts)
    {
        main_mc.gotoAndStop(1);
        snelheid = 0;
    }
}

1 个答案:

答案 0 :(得分:0)

我唯一能看到的,就是在我的机器上执行代码时,没有在这里正确指定if语句以及其他一些可以改进的小事件:

function toets(evt:KeyboardEvent):void
{
    (evt.keyCode == Keyboard.SPACE);
    {

        var bullet:Bullet=new Bullet();
        bullet.x = main_mc.x + 37;
        bullet.y = main_mc.y + -10;
        stage.addChild(bullet);
        bullet.addEventListener(Event.ENTER_FRAME,beweeg);
        function beweeg(evt:Event)
        {
            bullet.x +=  15;

        }
    };

    // ... rest of code in your function
}

这应该是:

function toets(evt:KeyboardEvent):void
{
    if (evt.keyCode == Keyboard.SPACE)
    {

        var bullet:Bullet=new Bullet();
        bullet.x = main_mc.x + 37;
        bullet.y = main_mc.y + -10;
        stage.addChild(bullet);

        var beweeg:Function = function(evt:Event)
        {
            bullet.x +=  15;
        };

        bullet.addEventListener(Event.ENTER_FRAME,beweeg);

    }

    // ... rest of code in your function
}

注意:

  1. 我删除了;条件
  2. 末尾的if
  3. 改进了函数中的beweeg函数声明
  4. 重新排序beweeg函数声明,使其在使用之前
  5. 在第一个;
  6. 的末尾删除了if