Получите все клипы фильмов в сцене
-
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);
}
}
Другие советы
Я почти уверен, что нет ничего «встроенного», чтобы получить все перемещения в область.
Единственное, что приближается, это, вероятно, GetObjectSunderPoint. Отказ Этот метод предоставит вам список дисплеев под одной точкой, а не области, но может быть использован для вручную находить движения в области.
У вас может быть спрайт, который является «областью». Это означает, что это размер области, которую вы хотите проверить. Так что просто проберите каждый перевод и проверяйте с помощью HittestObject или HittestPoint, если перемещение сталкивается со спрайтом. Если так, то это в этой области. Вот как я создаю Trant and Select Units Thing в играх RTS.
Ну, если вы хотите проверить все объекты под областью, вы должны использовать для Loop с помощью метода HittestPoint. И этот цикл может быть выброшен, наложив на это большое приращение для цикла. Например, если вы знаете, что у вас нет такого объекта, ширина или высота которого меньше 50 пикселей, то вы положите 50 в качестве увеличения вложенного цикла по ширине или высоте или оба. Вот образец, чтобы найти все точки в область прямоугольника или любая область, которую вы указываете
for (var j: int = rect.x; j0) {trace ("найдено объектов"+объекты); }}}
Ну, если вы хотите проверить все объекты под областью, вы должны использовать для Loop с помощью метода 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 ("найдено объекты"+Objects); }
}
}