【问题标题】:Array whose each clip is linked to its equal clip of another array数组,其每个剪辑都链接到另一个数组的相等剪辑
【发布时间】:2016-04-12 13:33:20
【问题描述】:

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

在地图上设置了 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]);}

非常欢迎任何帮助!

【问题讨论】:

  • 您应该只添加被点击的marklegend,而不是同时添加所有图例...

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


【解决方案1】:

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

这应该可以解决问题:

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

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

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    相关资源
    最近更新 更多