有没有办法让所有影片剪辑都在AS3区域内我需要这样做才能进行多项选择。
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
我很确定没有任何“内置”功能可以将所有Movieclips放入一个区域内。
唯一接近的可能是getObjectsUnderPoint。此方法将为您提供单个Point下的DisplayObject列表,而不是区域,但可用于手动查找区域中的MovieClip。
答案 2 :(得分:0)
你可以有一个sprite是“区域”。这意味着它是您要检查的区域的大小。因此,只需循环浏览每个动画片段并使用hitTestObject或hitTestPoint进行检查(如果动画片段与精灵相撞)。如果是这样的话那就在那个区域。这就是我在RTS游戏中创建拖动和选择单位的方法。
答案 3 :(得分:0)
如果要检查某个区域下的所有对象,则必须使用带有hitTestPoint方法的for循环。并且可以通过在此for循环上放置大增量来优化此循环。例如,如果您知道没有宽度或高度小于50像素的此类对象,那么您将在宽度或高度或两者中将嵌套循环中的50作为增量。 这是查找矩形区域或您指定的任何区域下的所有点的示例
for(var j:int = Rect.x; j0) { trace(“找到的对象”+对象); } } }
答案 4 :(得分:0)
如果要检查某个区域下的所有对象,则必须使用带有hitTestPoint方法的for循环。并且可以通过在此for循环上放置大增量来优化此循环。例如,如果您知道没有宽度或高度小于50像素的此类对象,那么您将在宽度或高度或两者中将嵌套循环中的50作为增量。 这是查找矩形区域或您指定的任何区域下的所有点的示例
for(var j:int = Rect.x; j&lt; = Rect.width; j ++) {
for(var i:int = Rect.y; i&lt; = Rect.height; i ++) {
var pt:Point = new Point(x,y);
objects = container.getObjectsUnderPoint(pt)
如果(objects.length大于0) { trace(“找到的对象”+对象); }
}
}