すべての映画クリップをステージエリア内に入手してください
-
29-09-2019 - |
質問
AS3のエリア内ですべての映画クリップを取得する方法は、複数の選択を行うためにこれが必要です。
解決
使用する必要はないかもしれません getObjectsUnderPoint().
すべてのアイテムが単一のコンテンツクリップにある場合は、コンテナの子供を単純にループして、選択肢内にあるかどうかを確認できます。
// The list of items contained in the selection.
var selection:Array = new Array();
// The rectangle that defines the selection in the containers coordinate space.
var selectionRect:Rectangle = new Rectangle(x, y, width, height);
// Loop throught the containers children.
for(var a:int; a<container.numChildren; a++){
// Get the childs bounds in the containers coordinate space.
var child:DisplayObject = container.getChildAt(a);
var childBounds:Rectangle = child.getRect(container);
// Check if this childs bounds against the selection bounds
if(childBounds.intersects(selectionRect)){
selection.push(child);
}
}
他のヒント
エリア内にすべてのMovieclipsを取得する「組み込み」は何もないと確信しています。
近くに来る唯一のものはおそらくです GetObjectSunderPoint. 。この方法では、領域ではなく単一のポイントの下にあるDisplayObjectsのリストが提供されますが、エリア内のMovieclipを手動で見つけるために使用できます。
「エリア」であるスプライトを持つことができます。それは、それがあなたがチェックしたいエリアのサイズであることを意味します。したがって、すべてのmovieclipをループして、Movieclipがスプライトと衝突する場合は、HittestObjectまたはHittestpointで確認してください。もしそうなら、それはその地域にあります。これが、RTSゲームでドラッグアンドセレクトユニットのものを作成する方法です。
エリアの下のすべてのオブジェクトを確認する場合は、HittestPointメソッドを使用してループに使用する必要があります。また、このループは、ループ用にこれに大きな増分を配置することでオプトミーできます。たとえば、幅または高さが50ピクセルより小さいそのようなオブジェクトがないことがわかっている場合、幅または高さまたはその両方でネストされたループの増分として50を配置します。長方形の領域または指定した任意の領域
for(var j:int = rect.x; j0){trace( "found objects"+objects); }}}
エリアの下のすべてのオブジェクトを確認する場合は、HittestPointメソッドを使用してループに使用する必要があります。また、このループは、ループ用にこれに大きな増分を配置することでオプトミーできます。たとえば、幅または高さが50ピクセルより小さいそのようなオブジェクトがないことがわかっている場合、幅または高さまたはその両方でネストされたループの増分として50を配置します。長方形の領域または指定した任意の領域
for(var j:int = rect.x; j <= rect.width; j ++){
for(var i:int = rect.y; i <= rect.height; i ++){
var pt:point = new Point(x、y);
objects = container.getObjectSunderPoint(PT)
if(objects.length> 0){trace( "found objects"+objects); }
}
}