Использование объекта сцены с флагом формы, установленным в true, приведет к ошибкам: вы проверяете, попадает ли какой-либо фактический пиксель, отображаемый на сцене, в точку (которая, вероятно, вернет false
, если только у вас нет объектов вневидимая область сцены, точно в указанной точке).
Можно, конечно, установить это значение на false
и повторить попытку (что будет работать лучше, но все же оставит проблему, которую вы тестируете, противограничивающий прямоугольник вокруг всего, что отображается на сцене, а не фактической области сцены), но могу ли я предложить другой подход?
Это более эффективно, особенно потому, что ваш спрайт, вероятно, намного меньше, чем сцена, чтобыпроверить ограничивающий прямоугольник игрока на границах сцены:
function onEnterFrame (ev:Event) : void {
player.x += vx;
player.y += vy;
var playerBounds:Rectangle = player.getBounds(stage);
if (playerBounds.left < 0 || playerBounds.right > stage.stageWidth) player.x -= vx;
if (playerBounds.top < 0 || playerBounds.bottom > stage.stageHeight) player.y -= vy;
}
Во время запуска игрок, конечно, должен находиться внутри видимой области сцены, и вам, возможно, придется установить фокус на сцену, чтобы убедиться, что клавиатурасобытия фиксируются.