我動態地將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');
}
}
}
}
所以我做錯了什麼,我應該接近的其他方法或我應該補充一點,生成一個隨機的屬性令牌用於識別?
刪除
as MovieClip;
你刪除什麼,如果'爲影片剪輯;''在_holder.getChildAt(I);' – mgraph 2012-03-23 09:26:01這是什麼應該做的:'VAR星球:星球(持有人);'? – weltraumpirat 2012-03-23 09:27:41
@mgraph有點有用。由於您的評論,我意識到我正在使用錯誤的方法!謝謝!如果您將您的評論添加爲答案,我會將其設置爲正確答案,因爲它實際上解決了我的問題;) – 2012-03-23 10:01:32