Actionscript 3 AS3在另一个子项的位置添加子项

Actionscript 3 AS3在另一个子项的位置添加子项,actionscript-3,Actionscript 3,嘿,我有一些穴居人,当他们建造棚屋时,我想在我上次点击的穴居人的坐标处添加棚屋,这需要能够准确地知道用户点击/点击的穴居人是什么。以下是在穴居人中产卵的代码: ////////////////////// ///Starting Cavemen/// ////////////////////// var cavemanVar:Array = new Array(50); for (var i:Number = 0; i < 50; i++) { cavemanVar[i] = 0;

嘿,我有一些穴居人,当他们建造棚屋时,我想在我上次点击的穴居人的坐标处添加棚屋,这需要能够准确地知道用户点击/点击的穴居人是什么。以下是在穴居人中产卵的代码:

//////////////////////
///Starting Cavemen///
//////////////////////
var cavemanVar:Array = new Array(50);
for (var i:Number = 0; i < 50; i++)
{
    cavemanVar[i] = 0;
}
var foo:MovieClip = new btn_caveman();
cavemanVar[0] = addChildAt(foo, 7);
var bar:MovieClip = new btn_caveman();
cavemanVar[1] = addChildAt(bar, 7);
cavemanVar[0].x = 335.50;
cavemanVar[0].y = 316.55;
cavemanVar[1].x = 335.50;
cavemanVar[1].y = 369.5;
stage.addEventListener(Event.ENTER_FRAME, example2);
function example2 (evt:Event) {
    for (i = 0; i < 50; i++)
    {
        if (cavemanVar[i] != 0)
        {
            cavemanVar[i].addEventListener(TouchEvent.TOUCH_TAP, btn_cavemanMenu3);
        }
    }
}    

function option1CavemenSpawn():void {
    trace("using option 1")
    actions += 1;
    score += 5;
    remaningActions += 1;
    updateTextBox();
    var foo6:MovieClip = new btn_caveman();
    cavemanVar[2] = addChildAt(foo6, 7);
    cavemanVar[2].x = 352.10;
    cavemanVar[2].y = 260.80 + Math.random() * (392.40 - 260.80);
    }
//////////////////////
///始发穴居人///
//////////////////////
var cavemanVar:数组=新数组(50);
对于(变量i:Number=0;i<50;i++)
{
cavemanVar[i]=0;
}
var foo:MovieClip=新的btn_穴居人();
cavemanVar[0]=addChildAt(foo,7);
变量栏:MovieClip=新btn_caveman();
cavemanVar[1]=addChildAt(bar,7);
cavemanVar[0].x=335.50;
cavemanVar[0].y=316.55;
cavemanVar[1].x=335.50;
cavemanVar[1],y=369.5;
stage.addEventListener(Event.ENTER_FRAME,示例2);
函数示例2(evt:事件){
对于(i=0;i<50;i++)
{
if(cavemanVar[i]!=0)
{
cavemanVar[i].addEventListener(TouchEvent.TOUCH_TAP,btn_cavemanMenu3);
}
}
}    
功能选项1cavemenspawn():void{
跟踪(“使用选项1”)
动作+=1;
分数+=5分;
剩磁+=1;
updateTextBox();
var foo6:MovieClip=newbtn_caveman();
cavemanVar[2]=addChildAt(foo6,7);
cavemanVar[2].x=352.10;
cavemanVar[2].y=260.80+Math.random()*(392.40-260.80);
}
任何帮助都会很好,我尝试过使用“cavemanVar”、“cavemanVar[2]”、“cavemanVar[I]”,但没有什么是我想要的。 希望我能解释清楚这是一件很难解释的事情。我也有一个移动穴居人的功能,我想实现它将选择最后一个点击/点击的穴居人,并将其移动到用户点击/点击的地方,所以可以这样做,如果是这样的话,如何做

编辑:

函数btn\u cavemanMenu3(事件:TouchEvent):无效{
btn_穴居人gotoAndStop(2);
痕迹('2');
allowBuildHut();
山洞人();
allowTapCavemanClose();

如果(ReminingActions你是说

cavemanVar[i].addEventListener(TouchEvent.TOUCH_TAP, onTap);

function onTap(e:TouchEvent):void {
    var caveman:btn_caveman = e.currentTarget as btn_caveman;
    trace("caveman tapped --- (" + caveman.x + ", " + caveman.y + ")");
}

好的,我马上注意到一些事情:

  • 一次又一次地在每一帧中附加eventListeners。如果游戏变大,这会使游戏变慢。我不确定,但我认为具有相同参数的多个事件侦听器不会堆叠,所以也没那么糟糕
  • 缺少
    示例2
    的返回类型
但除此之外,我认为您尝试执行的操作不起作用的原因是,您没有在
btn_cavemanMenu3
函数中引用选定的穴居人。通过
event.currentTarget
您可以引用被点击的穴居人


目前,您的问题名称和问题描述发生冲突。您希望实现什么?现在哪些有效,哪些无效?

已更新。我仍然不完全确定您想要做什么。您尝试创建的流程是什么,该流程包含哪些步骤,哪些步骤有效,哪些步骤无效T
cavemanVar[i].addEventListener(TouchEvent.TOUCH_TAP, onTap);

function onTap(e:TouchEvent):void {
    var caveman:btn_caveman = e.currentTarget as btn_caveman;
    trace("caveman tapped --- (" + caveman.x + ", " + caveman.y + ")");
}