2012-02-10 63 views
0

我試圖檢查兩個影片剪輯是否是同一類型的。檢查兩個動畫片段是否相同?

我有一個存儲在字典中的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

如果這不起作用,那麼您傳入的MovieClip並不是您認爲的那樣。

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

你說得對,我在傳遞參數時犯了一個錯誤;)謝謝。 – Nick 2012-02-10 18:59:46

0

問題是您使用字典的鍵的方式。使用==檢查相等性是否正常。行mc is activatedPage是錯誤的,is運算符用於檢查對象的類型,如mc is MovieClip

您假定字典的鍵是字符串,但並非總是如此。字典的要點是您可以使用任何對象作爲關鍵字。如果您只需要基於字符串的鍵,請使用Object。

使用for(var key:String in _navItems)要轉換的關鍵字符串,從而導致mcnull,因爲密鑰可能看起來像[object Object]皈依後_navItems["[object Object]"]不存在。

使用for(var key:Object in _navItems)或使用爲每個循環,像The_asMan建議。它迭代每個鍵的值,而不是僅僅在鍵上。