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);
支持大家,自从我上次 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);