Это мой предыдущий ответ на найденный похожий вопрос здесь .
Что я здесь делаю:
Создать Map
класс со свойством camera
, который является другим пользовательским классом MapCamera
.
MapCamera
имеет пять свойств:
_x
_y
map
- ссылка на экземпляр Map
, владеющий этим MapCamera
offsetX
offsetY
- Значения смещения представляют интервалы x и y от левого и верхнего краев экрана, которые должны быть установлены равными половине ширины и высоты сцены, чтобы камера правильно центрировалась на сцене.
- Свойства
_x
и _y
имеют значение private
и имеют геттеры и сеттеры.
Геттеры довольно простые:
public function get x():Number{ return _x; }
public function get y():Number{ return _y; }
Установщики - это то место, где будет изменен видовой экран, например:
public function set x(n:Number):void
{
_x = n;
map.x = -(_x + offsetX);
}
public function set y(n:Number):void
{
_y = n;
map.y = -(_y + offsetY);
}
Отсюда вы добавляете своих детей в контейнер Map
и затем можете просто перейти:
map.camera.x = player.x;
map.camera.y = player.y;
Что приведет к тому, что игрок всегда будет в центре экрана.