Flash 检查两个电影剪辑是否相同?

Flash 检查两个电影剪辑是否相同?,flash,actionscript-3,Flash,Actionscript 3,我在检查两部电影的嘴唇是否是同一种类的 我有一个存储在字典中的MovieClip集合,然后迭代条目并将每个MovieClip与传递到函数中的MovieClip进行比较。问题是,它不起作用。也没有 有什么想法吗 干杯 public function hideAllPagesExcept(activatedPage:MovieClip):void { for(var key:String in _navItems) { var mc: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");
            }
        }
    }

如果这不起作用,那么你正在传递的电影唇就不是你想象的那样

public function hideAllPagesExcept(activatedPage:MovieClip):void {
    for each (var mc:MovieClip in _navItems) {
        if(mc == activatedPage) {
            trace("Same");
        }
    }
}

问题在于你使用字典键的方式。使用
==
检查是否相等是可以的。行
mc is activatedPage
是错误的,
is
操作符用于检查对象的类型,如
mc is MovieClip

您假设字典的键是字符串,这并不总是正确的。字典的要点是你可以使用任何对象作为键。如果您只需要基于字符串的键,请使用对象

通过使用
for(var key:String in _navItems)
将键转换为字符串,这将导致
mc
null
,因为转换后键可能看起来像
[object object]
,并且
\u navItems[“[object object]”
不存在


使用
for(var键:navItems中的对象)
或像建议的那样为每个循环使用一个for。它迭代每个键的值,而不是只迭代键。

没错,我在传递的参数中输入了一个错误;)谢谢