AS3 - 数组调用了一个新函数......怎么样?

时间:2015-09-17 18:00:45

标签: actionscript-3 flash

对所有人说,自从我上一篇文章以来由于我疲惫的眼睛而超级快速修复。我会再问你一次......

关于阵列,所以在我只有一个"目标"展示。所以我认为我的游戏很简单...

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

这是我的代码行:



// 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);

// ----------------------------------------------- //
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分: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);