AS3 - 数组调用了一个新函数......如何?

AS3 - Array called into a new function... HOW?

支持大家,自从我上次 post 以来,由于我的眼睛疲劳,修复速度非常快。我再请你一个忙...

它是关于一个数组的,所以之前我只有一个 "target" 显示。所以我认为我的游戏很简单...

所以我决定添加更多移动的目标,并使用随机数学放置... 好吧,它们放置正确,但只有一个在移动。我认为是第一个正在创建的....

这是我的代码行:

// Creating multiple targetwith ADDCHILD and ARRAY at different location //

var arraymc_target:Array = [];
for(var i:int = 1; i<8; i++)
{
    var mc_target:target = new target();
    mc_target.x = Math.floor(Math.random() * 400);
    mc_target.y = Math.floor(Math.random() * 550);
 addChild(mc_target);
    arraymc_target.push(mc_target);
}

// Creating the TARGETS MOVEMENT  //
function goesside_1(event:Event):void {
 mc_target.x -= 2;
  if (mc_target.x < -20){
  mc_target.x = 550;
}
}
mc_target.addEventListener(Event.ENTER_FRAME, goesside_1);

// ----------------------------------------------- //

您的主要问题是,在 goesside_1 中,您正在移动 mc_target,它只是对您在循环中创建并推送到的 target 的最后一个实例的引用大批。

我注意到的另一个怪癖是您将 ENTER_FRAME 侦听器添加到您的目标之一而不是舞台。

您要做的是将侦听器添加到舞台,然后遍历数组中的每个目标:

var arraymc_target:Array = [];
for(var i:int = 1; i<8; i++)
{
    var mc_target:target = new target();
    mc_target.x = Math.floor(Math.random() * 400);
    mc_target.y = Math.floor(Math.random() * 550);
    addChild(mc_target);
    arraymc_target.push(mc_target);
}

// Creating the TARGETS MOVEMENT  //
function goesside_1(event:Event):void {
    for each(var mc_target:target in arraymc_target)
    {
        mc_target.x -= 2;
        if (mc_target.x < -20){
            mc_target.x = 550;
        }
    }
}

stage.addEventListener(Event.ENTER_FRAME, goesside_1);