Глава 3. Герой
Какая игра может быть без Героя (какая ж песня без баяна?). Герой будет спасать мир и принцесс, попутно круша плохих ребят. Добавим Героя. Он еще не хочет спасти мир, да, и ничего не умеет делать, но уже здесь: 
Герой красный квадрат (не Малевича). Что, плохо выглядит? Вы можете намазюкать собственного красивого и неповторимого Героя. Его клип должен быть в библиотеке под именем "char" или экспортирован (как дедушка Ленин) под тем же именем. Заметим, клип Героя имеет нулевую точку в центре, а клипы плиток имеет нулевую точку в левом верхнем углу. (Нулевая точка клипа обозначена маленьким крестиком). 
Хотите кода? Их есть у меня, добавьте строку после объявления: char={xtile:2, ytile:1};
Этот код объявляет новый объект - "char". Обект будет хранить всю информацию о себе любимом, как движется, как себя чувствует, что ест и пьет. Тем временем, дадим объекту пока только два свойства - xtile и ytile . Они (свойства) определяют местоположение (единица измерения плитки, а может попугаи?) нашего Героя на карте. Когда он начнет перемещаться, будем обновлять эти свойства и всегда будем знать на какой плитке он (Герой) стоит. Например, при xtile=2 и ytile=1 , будем считать что Герой стоит на плитке "t_1_2". Когда мы посмотрим на клип примера, мы увидим Героя на плитке 3 слева и 2 сверху от левого верхнего угла нашей карты. Все плитки начинают свою нумерацию с 0. Позднее наделим Героя большими свойствами и доблестями. Чтобы разместить клип Героя на экране, добавим следующие строки в функцию buildMap после окончания циклов: // Присоединяем клип char из библиотеки под именем char, кладем его на уровень 10000 game.clip.attachMovie("char", "char", 10000); // Запомним клип в общей структуре клипов char.clip = game.clip.char; // Считаем Х и У координаты клипа Героя char.x = (char.xtile * game.tileW)+game.tileW/2; char.y = (char.ytile * game.tileH)+game.tileH/2; // Ширина-высота Героя равна ½ Ширине-высоте плитки char.width = char.clip._width/2; char.height = char.clip._height/2; // Запомним координаты в клипе char.clip._x = char.x; char.clip._y = char.y;
Первая строка присоединяем новый клип из библиотеки в контейнер клипа игры game.clip (вы не забыли, что мы сохранили клип игры game.clip на экране _root.tiles в предыдущей главе) и даем ему имя - "char". Затем мы сохраняем в объекте информацию о клипе (т.е. как Герой сам себя показывает), тогда при необходимости обращения к клипу (изображению) Героя, можем просто написать char.clip и получим путь доступа _root.tiles.char. Это поможет нам и в дальнейшем, если, вдруг, нам понадобится переместить клип Героя куда-нибудь еще. В следующих строках, сохраняем координаты Х и У нулевой точки клипа. Вы хотели больше свойств, пожалуйста. Вспомним, свойства xtile/ytile хранят местоположение в плитках, не в пикселах. Свойства x/y хранят координаты клипа нашего Героя в пикселах. Хорошая идея позициионировать клип прежде, чем его показывать. Возможно потребуется изменить позицию, потому как Герой может подойти к стене или потерять силу, да и переменные изменить легче, чем менять скрытые свойства клипа _x/_y. Мы будем вычислять текущую позицию Героя по номеру плиток, на которых он стоит и добавим половину размера плитки, чтобы разместить клип Героя в центре плитки. Итак координата по Х - char.xtile * game.tileW . В следующих строках определяем ширину и высоту (размеры) Героя, как объекта, на основе размеров клипа нашего Героя. Это будет часто использоваться, при определении границ нашего Героя. Можно создать свои собственные границы, если не хотите связываться с размерами клипа. Некоторые герои могут иметь шапку из волос, которая будет касаться стен, тогда просто задайте собственные размеры Героя. Две последние строки обеспечивают сохранение координат объекта в координатах клипа Героя char.clip. Можно загрузить представленные коды со всеми клипами прямо отсюда. Есть вопросы - пишите мне на semikin@dionaholding.ru Читаем дальше - Глава 4. Управление перемещением Возвращаемся на Начало учебника
|