2012-03-23 97 views
0

我動態地將MovieClip添加到DisplayObjectContainer。其中一些影片剪輯循環遍歷DisplayObjectContainer的所有子項以檢查引力和碰撞。雖然,當我檢查當前孩子是否與調用者MovieClip不相等時,它似乎只檢查類型。Actionscript 3比較兩個影片剪輯

所以基本上,當我檢查MovieClip相等,它似乎只檢查類型。

Main.as:

var planet:Planet = new Planet(holder); 
planet.x = 0; 
planet.y = 0; 
planet.spawn(); 

var planet2:Planet = new Planet(holder); 
planet2.x = 50; 
planet2.y = 50; 
planet2.spawn(); 

Planet.as:

public class Planet { 
    public var x:Number = 0; 
    public var y:Number = 0; 

    private var _holder:DisplayObjectContainer; 
    private var _mc:MovieClip; 

    public function Planet(holder:DisplayObjectContainer) { 
     _holder = holder; 

     _mc = new PlanetMovieClip(); 
     _mc.addEventListener(Event.ENTER_FRAME, enterFrameHandler); 
    } 

    public function spawn():void { 
     _holder.addChild(_mc); 
    } 

    private function enterFrameHandler(evt:Event):void { 
     for(var i:int = 0; i < _holder.numChildren; i++) { 
      var child:MovieClip = _holder.getChildAt(i) as MovieClip; 

      // the other planet never passes this check 
      if(child !== _mc) { 
       trace('child is not the same'); 
      } 
     } 
    } 
} 

所以我做錯了什麼,我應該接近的其他方法或我應該補充一點,生成一個隨機的屬性令牌用於識別?

+0

刪除as MovieClip;你刪除什麼,如果'爲影片剪輯;''在_holder.getChildAt(I);' – mgraph 2012-03-23 09:26:01

+0

這是什麼應該做的:'VAR星球:星球(持有人);'? – weltraumpirat 2012-03-23 09:27:41

+0

@mgraph有點有用。由於您的評論,我意識到我正在使用錯誤的方法!謝謝!如果您將您的評論添加爲答案,我會將其設置爲正確答案,因爲它實際上解決了我的問題;) – 2012-03-23 10:01:32

回答

0

你應該_holder.getChildAt(i);

+0

這有什麼幫助? – loxxy 2012-03-23 10:55:58

+0

@loxxy我把它作爲評論,'蒂姆S.'說,這是有幫助 – mgraph 2012-03-23 10:58:22

+0

哦......沒有注意到。抱歉。 – loxxy 2012-03-23 11:06:14

0

我會改變!==與!= 你的代碼的其餘部分似乎沒問題。

+0

我試過,但沒有工作。無論如何,請繼續致謝 – 2012-03-23 09:24:47

0

首先,您在創建Planet動畫片段的代碼中存在錯誤。

應該

var planet:Planet = new Planet(holder); 
    planet.x = 0; 
    planet.y = 0; 
    planet.spawn(); 

    var planet2:Planet = new Planet(holder) 
    planet2.x = 50; 
    planet2.y = 50; 
    planet2.spawn(); 

你在Planet.as檢查空?

if(child!=null) { 
    if(child !== _mc) 
     trace('child is not the same'); 
    else 
     trace("child same");     
} 

而且,您可以隨時爲影片剪輯指定一些獨特的名稱,並將其用於比較。

+0

第一件事是在重寫腳本以在這裏發佈的基本錯誤。我編輯過它。但檢查null爲MovieClip仍然不能解決我的問題。無論如何感謝 – 2012-03-23 09:56:35

+0

你是否嘗試給電影剪輯分配一個唯一的名稱並檢查它? – 2012-03-23 10:16:42

相關問題