Случайно поместить мувиклип на объект неправильной формы? - PullRequest
0 голосов
/ 08 марта 2011

Есть ли способ произвольно разместить мувиклип / спрайт на объект неправильной формы?

Для прямоугольника это выглядит довольно просто (то есть используйте Math.random с диапазоном, являющимся координатами объекта) ... но что, если, скажем, вы хотели бы избежать размещения объектов в центре?

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Вы можете попытаться определить объект Shape, используя API рисования для создания неправильной формы, а затем выполнить hitTestPoint () для случайно сгенерированной точки в границах вашей Shape. В своем коде размещения позиции вы можете создать цикл, который повторяется до тех пор, пока тест попадания не вернет false, что означает, что точка находится за пределами области избегания.

var avoidMe:Shape = new Shape();
avoidMe.graphics.beginFill(0x0000FF, 0); //make it transparent fill
avoidMe.graphics.lineTo(x1, y1);
avoidMe.graphics.lineTo(x2, y2);
avoidMe.graphics.lineTo(x3, y3);
avoidMe.graphics.lineTo(xn, yn);
avoidMe.endFill();
addChild(avoidMe);

var w:Number = 100; //width of placement area
var h:Number = 100; //height of placement area
var p:Point = new Point();

do {
  p.x = Math.random() * w;
  p.y = Math.random() * h;
}
while (avoidMe.hitTestPoint(p.x, p.y));

var s:Sprite = new Sprite();
s.x = p.x;
s.y = p.y;

addChild(s);

Вы также можете сделать что-то очень похожее с hitTestObject (), чтобы проверить фактические границы ваших объектов вместо точки.

1 голос
/ 08 марта 2011

Вы можете нарисовать карту изображения, где разрешенные регионы - белые, а заблокированные - черные.Теперь вы можете проверить каждую случайно выбранную позицию, заблокирована она или нет.

Этот урок иллюстрирует, что я имею в виду, даже если он немного устарел: заблокированные области игры внизустраницы определяются зеленым цветом спрайта, показанного во встроенном SWF выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...