流程控制:场景是相对不变的游戏元素集合,游戏在场景间的切换就是流程控制。

场景、层和精灵:它们是不同层次的游戏元素。通常,场景包含层,层包含精灵,场景与层是其他游戏元素的容器,而精灵是展示给玩家的图形。

节点和渲染树:一切可以显示的游戏元素都是渲染树的节点。Cocos2d-x通过遍历渲染树绘制游戏画面。场景、层或精灵作为渲染树节点,我们并没有对它们的层次做硬性限制,例如开发者可以向精灵中添加层。

动作:作用于游戏元素,规定了游戏元素运动的方式。帧动画是作用于精灵的一种特殊动作。

类似Objective-C的代码风格:使用初始化方法或工厂方法创建对象,使用访问器方法模拟属性。Cocos2d-x提供了Objective-C风格的容器CCArray和CCDictionary。

内存管理:类似Objective-C的引用计数内存管理机制,同时提供半自动的对象自动回收池,实现灵活的管理内存。

生命周期:AppDelegate负责控制游戏的生命周期。

首先新建一个MainScene的类,并模仿HelloWorld引入需要的头文件等,项目中加入两张图片,主界面和主界面按钮上的背景。

CCDirector:导演类,控制游戏流程

将AppDelegate中创建的第一个场景改为刚创建的MainScene CCScene *pScene = MainScene::scene();

CCScene:场景,层的容器 CCLayer:层,各种内容的容器

在MainScene中实现一些必须的方法,如初始化等等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
bool MainScene::init()
{
 bool bRet = false;
 do
 {
  if ( !CCLayer::init() )
  {
   break;
  }
 
  CCSize size = CCDirector::sharedDirector()->getWinSize();
   
  CCSprite* mainback = CCSprite::create("Background/main_back.jpg");
  mainback->setPosition(ccp(size.width * 0.5, size.height * 0.5));
  this->addChild(mainback);
 
  CCSprite* btback1 = CCSprite::create("Background/main_button_back.png");
  btback1->setPosition( ccp(size.width * 0.5, size.height * 0.5) );
  CCLabelTTF* pLabelStart = CCLabelTTF::create("Start", "Consolas", 28);
  pLabelStart->setPosition( ccp(75, 20) );
  pLabelStart->setColor(ccc3(0, 0,0));
  this->addChild(btback1,1);
  btback1->addChild(pLabelStart, 5);
 
  CCSprite* btback2 = CCSprite::create("Background/main_button_back.png");
  btback2->setPosition( ccp(size.width * 0.5, size.height * 0.5-70) );
  CCLabelTTF* pLabelExit = CCLabelTTF::create("Exit", "Consolas", 28);
  pLabelExit->setPosition( ccp(75, 20) );
  pLabelExit->setColor(ccc3(0, 0, 0));
  btback2->addChild(pLabelExit, 6);
  this->addChild(btback2,2);
 
 
  setTouchEnabled(true);
 
  bRet = true;
 } while (0);
 
 return bRet;
}

在这段代码中,分别添加了一张背景,两张按钮背景,两段文字。

CCSprite:精灵,代表了游戏的最小可见单位。

上面添加的每张图片都是一个精灵。

CCSprite和CCLayer都继承自CCNode,而addChild正是CCNode中的方法,因此可以向层或者精灵中中添加精灵。

下面的代码在MainScene层响应触摸事件,获取坐标,并执行退出操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void MainScene::ccTouchesBegan(CCSet* touches, CCEvent *event)
{
 if(touches->count()==1)
 {
  CCTouch* touch = dynamic_cast<CCTouch*>(touches->anyObject());
  CCPoint position = touch->getLocationInView();
  position=CCDirector::sharedDirector()->convertToGL(position);
 
  CCLOG("X = %f Y = %f",position.x,position.y);
 
  if(position.x>166&&position.x<313&&position.y>306&&position.y<353)
  {
   CCDirector::sharedDirector()->end();
  }
 }
}

本文固定链接: http://blog.liubaicai.com/?p=131  转载请注明

本文固定链接: http://blog.liubaicai.com/?p=157  转载请注明

[Cocos2d-x for WP8学习笔记] 一些基本概念,建立自己的启动界面的更多相关文章

  1. [Cocos2d-x for WP8学习笔记] HelloWorld结构分析

    先来看一下目录结构: Assets:游戏资源文件,图片音频等,Resource文件夹也有类似功能 include:用于放置游戏头文件 Shaders:渲染器着色器文件(大雾) cocos2dorig. ...

  2. [Cocos2d-x for WP8学习笔记] HelloWorld

    Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2. ...

  3. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

  4. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  5. OpenFlow Switch学习笔记(一)——基础概念

    OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...

  6. es6学习笔记-class之一概念

    前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生 ...

  7. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  8. WP8 学习笔记(001_环境配置)

    Step 1  WP8 的开发要求64位操作系统,Windows 8及以上版本,需要激活版,建议网上买一个注册码.详见安装双系统. Step 2 安装好系统并已经激活之后,需要安装Windows Ph ...

  9. [Cocos2d-x for WP8学习笔记] 获取系统字体

    在Cocos2d-x for WP8较新的版本中,获取字体这一块,在wp8下默认返回了null,只能内嵌字体文件解决. 其实可以通过下面的方法获取系统的字体文件 CCFreeTypeFont::loa ...

随机推荐

  1. Spring Boot启动流程详解

    注:本文转自http://zhaox.github.io/java/2016/03/22/spring-boot-start-flow 环境 本文基于Spring Boot版本1.3.3, 使用了sp ...

  2. C/C++字符串查找函数 <转>

    C/C++ string库(string.h)提供了几个字符串查找函数,如下: memchr 在指定内存里定位给定字符 strchr 在指定字符串里定位给定字符 strcspn 返回在字符串str1里 ...

  3. jaegeropentracing的Java-client

    关于jaegeropentracing的Java-client做记录如下: 1.依赖jar包 <!-- 以下jar包是jaegeropentracing依赖的日志jar -->slf4j- ...

  4. 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题

    在运用Entity Framework调用存储过程的时候,遇到"调用EF的存储过程报"调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题 ...

  5. 使用NPM在项目中引入【lodash】

    mkdir [文件名 ] 创建项目文件 mkdir lodashDemo cd [文件名] 进入项目文件 cd lodashDemo nvm -v 查看nvm版本,确定nvm已安装 nvm -v No ...

  6. Reducing File Size

    [Reducing File Size] 1.Unity strips out unused assets. The amount of assets in your project folder d ...

  7. 高性能Web服务器Nginx的配置与部署研究(9)核心模块之HTTP模块基本常用指令

    一.HTTP模块的作用是什么? Nginx的HTTP模块用于控制Nginx的HTTP进程. 二.指令 1. alias 含义:指定location使用的路径,与root类似,但不改变文件的跟路径,仅适 ...

  8. 541. Reverse String II 指定翻转前k个的字符串

    [抄题]: Given a string and an integer k, you need to reverse the first k characters for every 2k chara ...

  9. 15- 1 << k 时的益出

    扩展GCD-时间复杂性 题目: 计算循环语句的执行频次 for (i = A; i != B; i += C) x += 1;其中A, B, C, i都是k位无符号整数. 输入: A B C k, 其 ...

  10. SpringBoot中使用AOP实现计算Service执行时间

    1.增加POM.XML的依赖架包 <!-- 引入 spring aop 依赖 --><dependency> <groupId>org.springframewor ...