Мне нужно ограничить точку внутри DisplayObject
, предоставленной мне художником.
У меня это работает, но только в тех случаях, когда курсор все еще находится внутри bounds
.
Ограниченный объект называется limited
.
function onSqMouseMove(event:MouseEvent) {
if(bounds.hitTestPoint(event.stageX, event.stageY, true)) {
limited.x = event.stageX;
limited.y = event.stageY;
} else {
/* Find closest point in the Sprite */
}
}
limited.addEventListener(MouseEvent.MOUSE_DOWN, function(event:MouseEvent) {
stage.addEventListener(MouseEvent.MOUSE_MOVE, onSqMouseMove);
});
limited.addEventListener(MouseEvent.MOUSE_UP, function(event:MouseEvent) {
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onSqMouseMove);
});
Как мне реализовать другую половину функции? Я знаю, что startDrag
Sprite принимает аргументы, где второй является прямоугольником ограничения, но в моем случае bounds
- произвольная форма.
Когда объект перетаскивается за границы, я хочу вычислить ближайшую точку от курсора до bounds
'многоугольника.
Просто чтобы заметить, что bounds
может иметь «дыры».
Edit:
Чтобы было ясно, я не хочу находить, находится ли точка внутри мувиклипа или нет, я хочу, чтобы ближайшая точка была из точки вне мувиклипа ( обратите внимание, что hitTestPoint не удается ! ) до границ.
(источник: liranuna.com )