Monster Pinball - всем пинболам пинбол Уроки iPhone SDK: (Часть 2) Перемещение и вращение изображений
Июн 05

Dashcode — еще один инструмент Apple iPhone SDK, предназначенный для создания простых приложений. В этом уроке на его примере мы рассмотрим анимацию и интерактивность (подразумевается знакомство с JavaScript и CSS).

В качестве примера возьмем фреймворк игры типа “космические пришельцы”: внизу экрана находится космический корабль, перемещаемый касаниями к экрану.

Создайте новый проект, воспользовавшись шаблоном “Custom“.

Создаем папку “Local Deploy”

Чтобы импортировать изображение корабля, проекту необходимо присвоить статус “Share“, — тогда Dashcode создаст папку размещения. Щелкните по пиктограмме “Share“.

dashcodeshareicon

Появится запрос на место сохранения/размещения.

dashcodedeployscreen

Выберите “Save To Disk…” и укажите нужную папку (желательно, не на рабочем столе).

Импортируем изображения

С помощью кнопки “View” на панели инструментов перейдите в режим “Files“, чтобы увидеть файлы проекта.

dashcodetoolbarfiles

Выше представлен мой проект. В папке “Images” есть дополнительный файл “player.png“, который я уже успел импортировать.

Для добавления файлов к проекту щелкните правой кнопкой мыши на папке “Images” и выберите “Add File…“. В данном случае нужно добавить объект, который будет играть роль космического корабля (свой, соответственно, я назвал “player.png“).

Добавление изображений к интерфейсу

Все очень просто: щелкаете на файле из списка “Files” и перетаскиваете его в представление приложения. Если представления не видно, щелкните на слове “content” в дереве документов (на рис. прямо под элементом “Untitled“).

gameship1

Итак, внизу появился корабль.

Альтернативный способ добавления изображений

Добавить изображения к интерфейсу можно и другим способом: перетащите файл в представление из Finder — и он автоматически добавится к проекту.

addtexture

Нажмите для увеличения

В качестве фона я добавил еще одно изображение, перетащив его с рабочего стола. Файл автоматически появляется в списке “Files“.

Масштабирование изображений и работа со слоями

Для изменения размеров изображения выделите его в окне представления и воспользуйтесь голубыми манипуляторами по углам. Фон закрывает корабль? Выделив его, выполните “Arrange->Send Backward“.

dashcodesendbackwardЧтобы при перемещении изображений интерфейс не менялся, потребуется позиционирование в абсолютной системе отсчета. Командой “Window->Show Inspector” откройте окно инспектора, перейдите на четвертую вкладку (с линейкой) и из раскрывающегося списка “Layout” выберите опцию “Absolute“.

dashcodeabsolutelayout

Выделив изображения корабля, в окне инспектора перейдите на первую вкладку “Attributes“, изменив опцию “ID” на “playerShip“. Значимое имя существенно упростит последующие операции с программным кодом.

playership

Ту же операцию проделайте и для фона, присвоив ему имя “background“.

Внедряем события касания

Для перемещения корабля нам нужно фиксировать касания к экрану iPhone. У приложений iPhone теперь есть ряд новых уникальных событий. Подробно на них мы останавливаться не будем: полный список есть на вкладке “Events” (последняя вкладка с синей коробочкой в окне инспектора).

dashcodeeventslist

Событие “ontouchmove” активируется при перемещении пальца вдоль экрана. “ontouchstart” вызывается в момент начала касания экрана пользователем. Для перемещения корабля воспользуемся обработчиком “ontouchmove“. Дополнительно обрабатываться будет и “ontouchstart“, поскольку в противном случае вызывается обработчик по умолчанию (масштабирующий изображение на экране).

Обработка событий

Приступаем к самому интересному — к анимации. Наша задача — заставить корабль перемещаться за касанием пользователя. Вопрос в том, где обрабатывать “ontouchmove” — в “playerShip” или в “background“. Ответ зависит от целей. Если нужно, чтобы пользователь, щелкнув по кораблю, перетаскивал его, то обрабатывать событие будет только “playerShip“. В данном случае я хочу, чтобы игрок мог щелкнуть по любой точке экрана, поэтому обрабатывать событие будут и “playerShip“, и “background“.

В окне представления выделите изображение фона, после чего дважды щелкните по “ontouchmove” в списке событий. В качестве имени обработчика укажите функцию “onTouchMoveHandler“.

dashcodebackgroundbehavior

Выполнив двойной щелчок по “ontouchstart“, в качестве функции выберите “onTouchStartHandler“. Dashcode автоматически создаст обе функции в “main.js” и предупредительно откроет файл прямо под интерфейсом.

dashcodehandlercode

Если по какой-либо причине файл автоматически не открылся, воспользуйтесь списком в режиме “Files” (см. раздел “Импортируем изображения“).

Перемещаем корабль

Чтобы перемещать корабль, необходимо определять текущую точку касания и помещать в ту же позицию корабль. Вот как выглядит код:

1
2
3
4
5
6
function onTouchMoveHandler(event)
{
document.getElementById('playerShip').style.left=
event.changedTouches[0].pageX+"px";
event.preventDefault();
}

Запускайте приложение: корабль должен перемещаться вслед за касающимся экрана пальцем (на симуляторе нажимайте кнопку мыши с последующим перетаскиванием).

Подробнее о событиях касания можно прочесть тут.

Чтобы предотвратить странные эффекты из-за обработчиков явлений по умолчанию, например, всплывающие окна при касании ниже точки фона, в “onTouchStartHandler” добавим “preventDefault()“.

1
2
3
4
function onTouchStartHandler(event)
{
event.preventDefault();
}

На этом пока все.

P.S. Если корабль не двигается, первым делом проверяйте “main.css“. Убедитесь, что для объекта задано позиционирование по абсолютным, а не относительным координатам, и удалите все поля. Результат должен напоминать представленный ниже:

1
2
3
4
5
6
7
8
9
10
#playerShip
{
width: 64px;
height: 64px;
position: absolute;
right: auto;
bottom: auto;
top: 281px;
left: 131px;
}

Все! Удачи, пишите каменты.

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...

One Ping to “Уроки iPhone SDK: (Часть 1) Основы работы с Dashcode: анимация и интерактивность”

  1. Уроки iPhone SDK: (Часть 2) Dashcode Invader: создаем игру с помощью Dashcode | LookApp.ru - обзоры программ и игр для iPhone Says:

    [...] этом уроке мы продолжим (первая часть) работу над простейшей игрой типа “космические [...]


Оставьте комментарий