检查两个MovieClip是否相同?

时间:2012-02-10 18:31:20

标签: flash actionscript-3

我正在尝试检查两个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");
            }
        }
    }

2 个答案:

答案 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)您将密钥转换为字符串,导致mcnull,因为转换后密钥可能看起来像[object Object]_navItems["[object Object]"] 1}}不存在。

使用for(var key:Object in _navItems)或使用进行每个循环,就像The_asMan建议的那样。它迭代每个键的值,而不是仅仅通过键。