我正在尝试检查两个MovieClip是否属于同一类。
我有一个存储在字典中的MovieClip集合,然后我迭代这些条目并将每个MovieClip与传入函数的MovieClip进行比较。问题是,它不起作用。 (==)也没有。
有什么想法吗?
干杯。
public function hideAllPagesExcept(activatedPage:MovieClip):void {
for(var key:String in _navItems) {
var mc:MovieClip = MovieClip(_navItems[key]);
if(mc is activatedPage) {
trace("Same");
}
}
}
答案 0 :(得分:2)
如果这不起作用,那么您传入的MovieClip就不是您想象的那样。
public function hideAllPagesExcept(activatedPage:MovieClip):void {
for each (var mc:MovieClip in _navItems) {
if(mc == activatedPage) {
trace("Same");
}
}
}
答案 1 :(得分:0)
问题在于您使用字典键的方式。使用==
检查是否相等是正常的。行mc is activatedPage
错误,is
运算符用于检查对象的类型,例如mc is MovieClip
。
您假设字典的键是字符串,但并非总是如此。字典的要点是你可以使用任何对象作为键。如果您只需要基于字符串的键,请使用Object。
使用for(var key:String in _navItems)
您将密钥转换为字符串,导致mc
为null
,因为转换后密钥可能看起来像[object Object]
而_navItems["[object Object]"]
1}}不存在。
使用for(var key:Object in _navItems)
或使用进行每个循环,就像The_asMan建议的那样。它迭代每个键的值,而不是仅仅通过键。