您好我提前为我的问题道歉,我确信这是非常基本的。
在地图上设置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]);}
非常欢迎任何帮助!
答案 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]);
}