[Cocos2d-x for WP8学习笔记] 一些基本概念,建立自己的启动界面_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > [Cocos2d-x for WP8学习笔记] 一些基本概念,建立自己的启动界面

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

 2013/9/14 20:46:20  刘白菜  博客园  我要评论(0)
  • 摘要:流程控制:场景是相对不变的游戏元素集合,游戏在场景间的切换就是流程控制。场景、层和精灵:它们是不同层次的游戏元素。通常,场景包含层,层包含精灵,场景与层是其他游戏元素的容器,而精灵是展示给玩家的图形。节点和渲染树:一切可以显示的游戏元素都是渲染树的节点。Cocos2d-x通过遍历渲染树绘制游戏画面。场景、层或精灵作为渲染树节点,我们并没有对它们的层次做硬性限制,例如开发者可以向精灵中添加层。动作:作用于游戏元素,规定了游戏元素运动的方式。帧动画是作用于精灵的一种特殊动作。类似Objective
  • 标签:笔记 for 学习 基本概念 自己 建立 概念 启动 学习笔记

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

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

节点和渲染树:一切可以显示的游戏元素都是渲染树的节点。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 class="cpp color1 bold">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  转载请注明

上一篇: 司法考试今天开考 准考证首用二维码 下一篇: 没有下一篇了!
发表评论
用户名: 匿名