私はFlash CS5/AS 3.0を使用して、Y位置に基づいてすべての関連するムービークリップを昇順で描画することで、被写界深度をシミュレートしようとしています。したがって、Y位置が10であるMovieClipは、Y位置が20であるMovieClipと比較して低いインデックスを持つ必要があるため、2番目のインデックスは最初のインデックスの上に描画されます。Y位置に基づいてMovieClipsの子インデックスを変更しますか?
これをテストするために、すばやく汚れた機能を書きました。トレース中、私はステージのトップに近づくとトラックのインデックスが0になることに気づきましたが、私があまりにも遠くに行くとステージから完全に消えてしまいます。その後、トレースすると、このエラーを生成を開始:theTruckはプレイヤー制御車両 敵のムービークリップ、コーンです
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/getChildIndex()
at EICT::Game/ReorganizeDisplayIndexes()
at EICT::Game/loop()
、岩はそれらの
なしイベントリスナーを持っていないムービークリップを含むすべての配列です。
private function ReorganizeDisplayIndexes(): void
{
var drawableObjects:Array = new Array();
drawableObjects.push(theTruck);
drawableObjects = drawableObjects.concat(Enemies, Rocks, Bushes);
drawableObjects.sortOn("y", Array.DESCENDING | Array.NUMERIC);
drawableObjects.reverse();
trace(collisionLayer.getChildIndex(theTruck));
for (var a:int = collisionLayer.numChildren - 1; a >= 0; a--)
{
collisionLayer.removeChildAt(a);
}
for (var i:int = 0; i < drawableObjects.length; i++)
{
collisionLayer.addChild(drawableObjects[i]);
}
}
ありがとうございました。私はそれを掘り下げてしまいました。このコードはトラックが最初に消えてしまうことさえありません。私はまだこの方法を使用するつもりです。 –