2013-06-03 159 views
0

我正在读取XML并将值附加到两个单独的影片剪辑中的对象。像这样AS3:通过引用其名称获取对象的值

Map01: 
Marker01.name = hello there 
Marker01.short = hel 
Marker01.value = 12 

Map02: 
Marker02.name = hello there 
Marker02.short = hel 
Marker02.value = 99 

现在我单击Map01中的Marker01并获取其名称和值。我想将它的值与Map02中Marker01的值进行比较,使用名称,或者更好.short,因为名称很长并且使用特殊字符/空格。我该怎么做呢?我几乎尝试了一切似乎合乎逻辑的事情!


编辑:澄清

var marker01:mc_marker = new mc_marker(); 
marker01.name="hello there"; 
marker01.short="abc"; 
marker01.val="99"; 
marker01.x=10; 
marker01.y=10; 
this.mc_map01.addChild(marker01); 

var marker02:mc_marker = new mc_marker(); 
marker02.name="hello there"; 
marker02.short="abc"; 
marker02.val="20"; 
marker02.x=10; 
marker02.y=10; 
this.mc_map02.addChild(marker02); 

marker01.addEventListener(MouseEvent.MOUSE_UP, showMarkerInfo); 
marker02.addEventListener(MouseEvent.MOUSE_UP, showMarkerInfo); 

function showMarkerInfo(event:MouseEvent):void { 
    txt_ms.text=event.target.short; 
    txt_mv.text=event.target.val; 
    if (event.target.short==mc_map02.marker02.short){ 
     txt_mvi.text="here should be the marker02 value"; 
    } 
} 
+0

Map01和Map02是动画片段,每个MC都包含一个Object Marker01。是对的吗? – McMannus

+0

是的!对象也是MC。 – CodeBunny

回答

0

示例代码你有一个错字那里。 Map02使用Marker1的东西。 如果在拼写错误中存在拼写错误,请使用this.getChildByName(“Marker01”)将影片剪辑返回给您,购买其名称。尽管如此,因为“名称”是它搜索的内容。当您应该将Marker01作为名称时,您使用了“你好”。我建议你把一个名为“数据”的属性,并把它的XML信息,所以它不冲突。如果(this.getChildByName(“Marker01”).data.value == this.getChildByName(“Marker02”).data.value)。

我认为这是因为您在运行时生成Marker0X,并且无法直接声明某些变量并使用它们。

如果您将“数据”设置为可以比较两个“数据”的自定义类的实例,则为布朗点。如果您需要更多帮助,请添加评论^ _^

+0

呃,我真的不明白这一点。还有,错字。我做了一个简化的样本,应该更清楚地说明问题..好,如果我能弄清楚如何发布它$%$&%$& – CodeBunny