Стреляй в разные стороны в as3 - PullRequest
0 голосов
/ 15 сентября 2018

У меня проблемы с игрой, которую я создаю.Мой персонаж стреляет пулями, но когда дело касается стрельбы в разные стороны, это не работает должным образом.Когда он стреляет, следуйте указаниям персонажа.Ниже я выкладываю код.

var Bulli:Array = new Array();
var ShootTimer:Timer = new Timer(0);
stage.addEventListener(MouseEvent.MOUSE_DOWN, startShootTimer);
stage.addEventListener(MouseEvent.MOUSE_UP, stopShootTimer);
ShootTimer.addEventListener(TimerEvent.TIMER, shootBullo);
stage.addEventListener(Event.ENTER_FRAME, mainLoop);

function startShootTimer(e:MouseEvent):void
{
    ShootTimer.start();
}
function stopShootTimer(e:MouseEvent):void
{
    ShootTimer.stop();
}       
function shootBullo(e:TimerEvent):void
{
    var bullo:Bullo = new Bullo();
    bullo.x = Jumbo.x;
    bullo.y = Jumbo.y - 50; 

    if(destra)
    {
        bullo.dir = destra;
    }
    else
    {
        bullo.dir = sinistra;
    }

    addChild(bullo);
    Bulli.push(bullo);
}       
function mainLoop (e:Event):void
{
    for (var b:int = 0; b < Bulli.length; b++)
    {
        if (Bulli[b].dir == destra)
        {
            Bulli[b].x += 10;
        }
        else
        {
            Bulli[b].x -= 10;
        }

    }
}

1 Ответ

0 голосов
/ 16 сентября 2018

Не добавляйте этого слушателя в Stage, вместо этого добавляйте его к каждому уникальному bullo ...

//# not to Stage...
//stage.addEventListener(Event.ENTER_FRAME, mainLoop);

Попробуйте это (не проверено, но может быть полезно для некоторых идей):

function shootBullo(e:TimerEvent):void
{
    var bullo:Bullo = new Bullo();
    bullo.x = Jumbo.x;
    bullo.y = Jumbo.y - 50; 

    if(destra) { bullo.dir = destra; }
    else { bullo.dir = sinistra; }

    bullo.addEventListener(Event.ENTER_FRAME, mainLoop);
}

function mainLoop (e:Event):void //the "e" of this function parameter is each unique "Bullo"
{
    //# currentTarget is whichever "bullo" is talking to this Event (via Listener).
    if (e.currentTarget.dir == destra) 
    { e.currentTarget.x += 10; }

    else { e.currentTarget.x -= 10; }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...