MovieClipsをDisplayObjectContainerに動的に追加します。これらのMovieClipsの一部は、重力と衝突をチェックするためにDisplayObjectContainerのすべての子をループします。しかし、現在の子が呼び出し元のMovieClipと等しくないかどうかを確認すると、その型だけをチェックするようです。Actionscript 3 2つのムービークリップを比較する
基本的に、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はこれが何を行うことになっています: 'VARの惑星:惑星(ホルダー);'? – weltraumpirat
@mgraphそれはちょっとした作品です。あなたのコメントのために私は間違ったアプローチを使用していることに気付きました!ありがとう!あなたのコメントを答えとして追加すると、私は実際に自分の問題を解決したので正しい答えとして設定します;) –