Создание игр для мобильных телефонов
Шрифт:
Member Constants
В классе Sprite заданы следующие константы, которые используются для идентификации трансформаций, применимых к спрайту:
► TRANS_NONE – спрайт никак не трансформируется;
► TRANS_ROT90 – спрайт вращается по часовой стрелке на 90 градусов;
► TRANS_ROT180 – спрайт вращается по часовой стрелке на 180 градусов;
► TRANS_ROT270 – спрайт вращается по часовой стрелке на 270 градусов;
► TRANS_MIRROR – спрайт наклоняется по вертикальной оси;
► TRANS_MIRROR_ROT90 – спрайт наклоняется по вертикальной оси и поворачивается
► TRANS_MIRROR_ROT180 – спрайт наклоняется по вертикальной оси и поворачивается по часовой стрелке на 180 градусов;
► TRANS_MIRROR_ROT270 – спрайт наклоняется по вертикальной оси и поворачивается по часовой стрелке на 270 градусов.
Эти константы трансформации применяются посредством методы setTransform и позволяют вам создавать в спрайте различные эффекты, связанные с вращением и зеркальным отображением.
Конструкторы
Для создания спрайтов в классе Sprite поддерживаются следующие конструкторы:
► Sprite(Image image) – создает основанный на изображении, не содержащий анимации спрайт;
► Sprite(Image image, int frameWidth, int frameHeight) – создает анимированный спрайт, основанный на изображении. Данный спрайт содержит кадры анимации (размер и количество кадров определяется заданной шириной и высотой кадра);
► Sprite(Sprite s) – создает один спрайт из другого.
Первые два конструктора позволяют вам создавать неанимированные и анимированные спрайты, соответственно, а третий конструктор используется только для копирования спрайта.
Методы
В классе Sprite поддерживаются следующие методы:
► void setFrameSequence(int[] sequence) – задает последовательность анимационных кадров для спрайта;
► void nextFrame – настраивает текущий кадр спрайта на следующий кадр в анимационной последовательности;
► void prevFrame – настраивает текущий кадр спрайта на предыдущий кадр в анимационной последовательности;
► int getFrame – считывает индекс текущего кадра спрайта в последовательности кадров;
► void setFrame(int sequenceIndex) – настраивает текущий кадр спрайта в анимационной последовательности на определенный индекс кадра;
► int getFrameSequenceLength – считывает количество кадров в анимационной последовательности;
► int getRawFrameCount – считывает количество анимационных кадров для спрайта, указанное в изображении спрайта;
► void setImage(Image img, int frameWidth, int frameHeight) – задает для спрайта определенное изображение;
► boolean collidesWith(Image image, int x, int y, boolean pixelLevel) – проверяет наличие конфликта между спрайтом и изображением в определенном положении по осям X и Y (последний параметр указывает, должен ли этот конфликт быть пиксельным или основанным на конфликте прямоугольника);
► boolean collidesWith(Sprite s, boolean pixelLevel) – проверяет наличие конфликта между двумя спрайтами (второй параметр указывает, должен ли этот конфликт быть пиксельным или основанным на конфликте прямоугольника);
► boolean collidesWith(TiledLayer t, boolean pixelLevel) – проверяет наличие конфликта между спрайтом и вложенным слоем (второй параметр указывает, должен ли этот конфликт быть
пиксельным или основанным на конфликте прямоугольника);► void defineCollisionRectangle(int x, int y, int width, int height) – создает прямоугольник границы для спрайта. Данный прямоугольник предназначен для распознавания конфликтов прямоугольника (часто он меньше, чем сам спрайт; это позволяет учесть спрайты, не имеющие прямоугольной формы);
► void defineReferencePixel(int x, int y) – создает для спрайта пиксель ссылки, который используется для перемещения и трансформации спрайта вместо его левого верхнего угла;
► int getRefPixelX – считывает положение пикселя ссылки спрайта по оси X относительно системы координат (canvas или layer manager);
► int getRefPixelY – считывает положение пикселя ссылки спрайта по оси Y относительно системы координат (canvas или layer manager);
► void setRefPixelPosition(int x, int y) – задает положение пикселя ссылки слоя по осям X и Y относительно системы координат объекта (canvas или layer manager);
► void setTransform(int transform) – настраивает трансформацию спрайта (для указания типа трансформации используются константы трансформации);
► void paint(Graphics g) – рисует спрайт, если он видимый.
Данные методы поддерживают большое количество функций спрайта, например, создание анимационной последовательности, распознавание конфликтов, работу с пикселем ссылки и добавление трансформаций.
Класс TiledLayer
Класс TiledLayer представляет собой слой, состоящий из нескольких слоев, которые выглядят, как единый графический объект. Вы можете воспринимать такой слой как головоломку, содержащую прямоугольные элементы одинакового размера. Вложенные слои очень удобны для создания фона и карты игры, особенно если такие карты больше, чем экран телефона. Класс TiledLayer позволяет более эффективно управлять изображениями, потому что вы можете использовать слои повторно, а также изменять последовательность слоев для формирования фона.
Аналогично анимационным кадрам, которые хранятся в одном анимированном изображении спрайта, слои хранятся в одном изображении. Класс TiledLayer даже поддерживает анимацию, однако она функционирует не совсем так, как анимация кадров в классе Sprite.
Конструктор
Класс TiledLayer имеет только один конструктор, который принимает различные параметры, определяющие размер карты и слоев:
TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight)
Первые два параметра данного конструктора указывают размеры слоя. Третий параметр – это изображение, содержащее слои, а два последних параметра определяют ширину и высоту отдельных слоев.
Методы
В классе TiledLayer поддерживаются следующие методы:
► void fillCells(int col, int row, int numCols, int numRows, int tileIndex) – заполняет группу ячеек прямоугольной формы выбранным индексом слоя;
► int createAnimatedTile(int staticTileIndex) – создает новый анимированный слой, который изначально настроен на определенный индекс слоя (данный индекс является возвратным, отрицательным значением);
► int getCell(int col, int row) – считывает индекс слоя в указанной ячейке;