2010-10-12 47 views
0

疗法是一种方式来获得与AS3一个区域内的所有影片剪辑我需要这个做多项选择中的所有影片剪辑。获取舞台区

回答

2

它可能不是必要使用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); 
    } 
} 
0

我敢肯定,没有什么“内置”,将得到一个区域内的所有影片剪辑。

来接近的唯一事情是可能getObjectsUnderPoint。此方法将为您提供一个Point下的DisplayObject列表,而不是一个区域,但可用于在一个区域中手动查找影片剪辑。

0

你可以有一个精灵那就是“区域”。这意味着它是你想要检查的区域的大小。因此,只要循环播放每个动画片段,并检查hitTestObject或hitTestPoint(如果动画片段与精灵发生冲突)。如果是的话,那就是在那个地区。这就是我如何在RTS游戏中创建拖拽和选择单位的东西。

+0

你可以把一些代码听起来真的很好 – Delta 2010-10-13 17:22:36

0

那么,如果你想检查的区域下的所有对象,你必须使用与hitTestPoint方法循环。并且可以通过在这个for循环上放大增量来优化此循环。例如,如果你知道你没有这样的对象的宽度或高度小于50像素,那么你将把50作为嵌套循环的宽度或高度或两者的增量。 这里是样本来查找所有点在矩形区域或您指定的任何区域

for(var j:int = Rect.x; j0) { trace(“found objects”+ objects); }} } 那么,如果你想检查的区域下的所有对象

0

,你必须使用与hitTestPoint方法循环。并且可以通过在这个for循环上放大增量来优化此循环。例如,如果你知道你有没有这样的对象,它的宽度或高度小于50像素,那么你将会把50作为增量嵌套循环无论是在宽度或高度或两者.. 这里找到所有点的样本该矩形区域或任何区域下指定

为(VAR Y:INT = Rect.x;Ĵ< = Rect.width; J ++){

为(VAR I:INT = Rect.y; i < = Rect.height; i ++) {

var pt:Point = new Point(x,y);

对象= container.getObjectsUnderPoint(PT)

如果(objects.length> 0){ 微量 ( “中找到的对象” +对象); }

}

}