本节,已经能够利用我们眼下所学的知识做出一些有趣的东西。之前已经说过,CCNode类没有贴图,也就是说在屏幕上单独建立一个节点是没有不论什么效果的,可是能够通过这个“无形”的节点来控制屏幕上的节点。如今就開始吧!

    1. 增加节点

    新建一个项目,并在HelloWorldScene.cpp文件里的init函数中做如代码清单3-2的代码所看到的的改动。

    代码清单3-2 增加节点

  1. bool HelloWorld::init()
  2. {
  3.  
  4. if ( !CCLayer::init() )
  5. {
  6. return false;
  7. }
  8.  
  9. //创建一个节点
  10. CCNode *anode = CCNode::create();
  11. //将节点作为子节点增加场景类中
  12. this->addChild(anode,0);
  13.  
  14. CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
  15. "CloseNormal.png",
  16. "CloseSelected.png",
  17. this,
  18. menu_selector(HelloWorld::menuCloseCallback) );
  19. pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
  20.  
  21. CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
  22. pMenu->setPosition( CCPointZero );
  23. //将菜单作为子节点增加之前定义的节点中
  24. anode->addChild(pMenu, 1);
  25.  
  26. CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34);
  27.  
  28. CCSize size = CCDirector::sharedDirector()->getWinSize();
  29.  
  30. pLabel->setPosition( ccp(size.width / 2, size.height - 20) );
  31.  
  32. //将标签作为子节点增加之前定义的节点中
  33. anode->addChild(pLabel, 1);
  34.  
  35. CCSprite* pSprite = CCSprite::create("HelloWorld.png");
  36.  
  37. pSprite->setPosition( ccp(size.width/2, size.height/2) );
  38.  
  39. //将背景图片作为子节点增加之前定义的节点中
  40. anode->addChild(pSprite, 0);
  41. return true;}

首先通过create函数创建一个节点anode,把anode作为子节点使用addChild函数增加HelloWorld场景类对象中;然后把本来作为子节点增加HelloWorld场景类对象中的对象,使用addChild函数作为子节点增加anode中。这些对象包含菜单类对象、标签类对象、人物精灵类对象。这些对象的类都是CCNode类的子类。

    执行项目,发现和改动前的项目并无差别,如图3-4所看到的。  

    2. 改变位置

    改动HelloWorldScene.cpp文件里的init方法,如代码清单3-3所看到的。

    代码清单3-3 设置节点位置

        //设置节点位置

        anode->setPosition(ccp(50,50));

    执行效果如图3-5所看到的。





     



    能够看到,总体都跟着节点移动了。

    3. 设置缩放

    以下改动这段代码如代码清单3-4所看到的,看一下缩放的效果。

    代码清单3-4 设置缩放代码

    //设置缩放

    anode->setScale(0.5);

    执行效果如图3-6所看到的。





     



    4. 总体旋转

    最后再来试验总体旋转,如代码清单3-5所看到的。由于默认锚点在左下角,因此须要首先移动一下总体的位置,否则总体一转,屏幕中将仅仅显示黑屏。注意角度设置为角度制。

    代码清单3-5 设置旋转

    //设置旋转

    anode->setPosition(ccp(200,200));   

    anode->setRotation(90.0);

    执行效果如图3-7所看到的。





     



    本节介绍了屏幕中渲染对象的基础类CCNode,下一节将介绍控制游戏显示的导演类CCDirector。

Cocos2D-x权威指南:通过节点控制屏幕中的全体渲染对象的更多相关文章

  1. 《JavaScript权威指南》学习笔记 第三天 找个对象

    现实生活中真的对象没有找到,在JavaScript 里左一个对象又一个对象,搞的我也是晕晕乎乎不知所云.人事复杂,人心难懂.我虽然是文科生,但是也不善于巧言.还是在js里面找找对象吧.那么我们今天就从 ...

  2. Node.js权威指南 (6) - 在Node.js中操作文件系统

    6.1 同步方法与异步方法 / 856.2 对文件执行读写操作 / 86 6.2.1 文件的完整读写 / 86 6.2.2 从指定位置处开始读写文件 / 916.3 创建与读取目录 / 97 6.3. ...

  3. 《Javascript权威指南》

    <Javascript权威指南> chorme.safari中的input或textarea html超链接(a)详细讲解 html5新增及删除标签 html表格 图片加alt属性

  4. netty权威指南学习笔记二——netty入门应用

    经过了前面的NIO基础知识准备,我们已经对NIO有了较大了解,现在就进入netty的实际应用中来看看吧.重点体会整个过程. 按照权威指南写程序的过程中,发现一些问题:当我们在定义handler继承Ch ...

  5. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  6. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  7. 【文章内容来自《Android 应用程序开发权威指南》(第四版)】如何设计兼容的用户界面的一些建议(有删改)

    最近一直在看的一本书是<Android 应用程序开发权威指南>(第四版),十分推荐.书中讲到了一些用户界面设计的规范,对于初学者我认为十分有必要,在这里码给大家,希望对我们都有用. 在我们 ...

  8. Hadoop权威指南:压缩

    Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...

  9. Kafka权威指南——broker的常用配置

    前面章节中的例子,用来作为单个节点的服务器示例是足够的,但是如果想要把它应用到生产环境,就远远不够了.在Kafka中有很多参数可以控制它的运行和工作.大部分的选项都可以忽略直接使用默认值就好,遇到一些 ...

随机推荐

  1. hdu 2177(威佐夫博奕)

    题意:容易理解,在威佐夫博奕的基础上新增加了一条要求:就是如果在赢得条件下,输出第一步怎么走. 分析:使用暴力判断,详细见代码. 代码: #include<stdio.h> #includ ...

  2. Yii系列教程(三):集成Redis

    1安装Redis 切换至/usr/local/src下,下载并安装redis: $ wgethttp://redis.googlecode.com/files/redis-2.6.12.tar.gz ...

  3. linux实现自动远程备份(scp+ssh)

    刚上线的服务器需要备份日志,要备份到另一台服务器上去,为了减少工作量,采用linux的定时任务去自动执行.因服务器都是linux的,因此采用linux的远程复制scp命令.但这里涉及到一个问题,就是s ...

  4. stitch image app (Qt)

    result how to use? source code http://7qnct6.com1.z0.glb.clouddn.com/dropSelect.rar

  5. R 环境内存限制的更改

    由于R语言非常消耗内存,所以做较大数据的处理时需要增加内存空间,有以下种方式: 一. 在未开启R之前,在cmd中,输入下面指令 r −−max−mem− s i z e =4Gb 二. 在开启R之后, ...

  6. nginx指令

    Directives(指令) Syntax(语法): aio on | off | threads[=pool]; Default: aio off; Context: http, server, l ...

  7. flappy pig小游戏源码分析(1)——主程序初探

    闲逛github发现一个javascript原生实现的小游戏,源码写的很清晰,适合想提高水平的同学观摩学习.读通源码后,我决定写一系列的博客来分析源码,从整体架构到具体实现细节来帮助一些想提高水平的朋 ...

  8. _margin和margin的区别

    _margin和margin的区别 _margin和margin的区别 Question: margin:15px 300px 0px 100px; height:72px; width:188px; ...

  9. bluebird-Core API(一)

    new Promise new Promise(function(function resolve, function reject) resolver) -> Promise 创建一个新的Pr ...

  10. Spark RDD概念学习系列之RDD的checkpoint(九)

     RDD的检查点 首先,要清楚.为什么spark要引入检查点机制?引入RDD的检查点?  答:如果缓存丢失了,则需要重新计算.如果计算特别复杂或者计算耗时特别多,那么缓存丢失对于整个Job的影响是不容 ...