每个剪辑链接到另一个数组的相等剪辑的数组

时间:2016-01-08 00:00:27

标签: arrays actionscript-3 loops for-loop addchild

您好我提前为我的问题道歉,我确信这是非常基本的。

在地图上设置33个地标,其中一个数组在库中调用一个类。 第二个数组定义那些地标的坐标。

for  (var i:uint = 0; i < 33; i++) { 
     mark[i] = new landMark();
     landMarks.addChild(mark[i]);
     mark[i].x = lmxy[i]['x'];
     mark[i].y = lmxy[i]['y'];
}


var lmxy:Array = [{x:1620,y:880},{x:1850, y:1050},etc...];

到目前为止,地标显示每个地方都在正确的位置。

第三个数组包含点击地标时应显示的不同图例。 因此,地标[1]应该显示图例[1]和地标[31]图例[31]

var lgd:Array = [lgdA, lgdB, etc... ];

var legends:MovieClip;
for (var j:uint=0;j<lgd.length;j++) {
    legends = new lgd[j](); 
    legends.x = 300;legends.y = 170;

}

编辑原因显然不明确: 我在循环中尝试将标记链接到图例但是我收到错误:

    mark[i].addEventListener(MouseEvent.CLICK, getLgd);
    function getLgd(e:Event):void {stage.addChild (lgd[i]);}

非常欢迎任何帮助!

1 个答案:

答案 0 :(得分:0)

问题是变量i没有定义。找到单击哪个标记的唯一方法是在数组中找到其索引,然后可以添加具有相同索引的图例。由于索引未从事件侦听器传递,因此您需要使用具有e属性的target

这应该可以解决问题:

mark[i].addEventListener(MouseEvent.CLICK, getLgd);

function getLgd(e:Event):void
{
    var i:int = mark.indexOf(e.target);
    stage.addChild(lgd[i]);
}