пятница, 27 июля 2012 г.

Общая структура проекта


           Рассмотрение любого языка, фреймворка и тд, зачаcтую начинают с обычного  проекта
               “Hello Word”. Но для начала,  чуть-чуть разберемся в архитектуре построения классов 
               cocos2d.





Как видно из диаграммы, в основе всех объектов кокоса лежит CCNode.
CCNode – класс прародитель (или базовый), определяющий все свойства и методы общие для всех его наследников и не имеющий визуального представления.






Основные классы, используемые в построении базового функционала – 
CCDirector,CCLayer и CCScene, о которых мы сейчас и поговорим.
 
CCDirector(Директор) – это singleton-класс, основной в механизме работы приложения. Он хранит глобальные настройки, конфигурации для фреймворка и управляет сценами (CCScene).CCScene(сцена) – класс-контейнер для всех объектов.CCLayer(слой) – класс, для группировки объектов (аналог слоя в PhotoShop J). Слой, чаще всего, используется для разделения функциональной части  и графической + обладает методами для обработки касаний, нажатия мыши и снятия данных с акселерометра.

Итак, приступим к практике:

1. Создадим кокосовский проект


2. Откроем класс Hello Word.




 Как видно, тэмплейт кокоса, уже содержит проект с надписью Hello World.( у меня стоит не последняя версия данного фреймворка. В последней версии, стандартный темплейт, содержит еще дополнительный функционал, в виде подключения к Game Center ). Но на данный момент, это не суть важно.

3. Удалим все лишнее и рассмотрим основную структуру  CCLayer. Я добавил пару методов, которым стоит уделить внимание.


 Первое - объявление сцены. Сцена, как я упоминал выше, является контейнером для объектов, а все объекты помещаются в слои. Примером была надпись (CCLable), в исходном темплейте.
Объявление сцены - не обязательная часть структуры класса. Для отображения каких либо пунктов интерфейса или игрового мира и персонажа, хватит и одной сцены, содержащей множество слоев.

 Второе - метод инициализации слоя. Здесь и происходит основная работа, сюда помещаем все объекты интерфейса, как графические(бэкграунд, спрайты и тд), так и логические(разные меню или вами написанные объекты) и вызовы таймеров и др.

 Следущее - метод update. Аналог таймера из UIKit, но при конструировании игр, имеющий очень большое значение. Этот метод, так же не обязателен.

 Далее у нас идет, комплекс методов для обработки Touches или другими словами прикосновений. Эти методы не обязательны (к примеру в ситуации - простой интерфейс, состоящий из меню).
   И последнее - dealloc. Метод деинициализации объявленных ранее объектов в этом слое.

  На этом мы остановимся. Более подробно о использовании, каждого из методов и объектов, я расскажу в следующих статьях. А теперь, я дам пару советов.

 Делайте сниппеты

 У многих стандартных, часто используемых, методов кокоса, нет сниппетов (к примеру - scene или  update). Для тех кто не знает, как их делать, подробно распишу.

  Выделяем нужный кусок кода и над выделенной частью кода зажимаем левую кнопку, пока не появится курсор, при этом захватив выделенный кусок кода. 


  Затем, перенесите его в область стандартных сниппетов, создав новую ячейку. Я взял для примера, метод scene.


  
  Проведем небольшую конфигурацию новоиспеченного сниппета.
   
    Title(название): Scene Snippet
    Platform(платформа): All
    Language(Язык программирования): Objective-C
    Completion Shortcut(подсказка): scene (основная опция)
    Completion Scopes(Область видимости): All
    
    И проведем пару замен в коде. В место, названия слоя (Hello World), подставим не большой тэг <#Class name#>. Этот тег позволит при автокомплите создать заглушки. 


  Теперь, при наборе кода, если мы начнем вводить часть подсказки указанной в настройках сниппета, нам высветится меню автокомплита с уже ново созданной заглушкой scene. 



  При выборе scene, у нас появится данный блок кода с двумя полями для заполнения.


 На этом пока все :)

Комментариев нет :

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