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

    1. 增加节点

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

    代码清单3-2 增加节点

    bool HelloWorld::init()
{ if ( !CCLayer::init() )
{
return false;
} //创建一个节点
CCNode *anode = CCNode::create();
//将节点作为子节点增加场景类中
this->addChild(anode,0); CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback) );
pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) ); CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition( CCPointZero );
//将菜单作为子节点增加之前定义的节点中
anode->addChild(pMenu, 1); CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34); CCSize size = CCDirector::sharedDirector()->getWinSize(); pLabel->setPosition( ccp(size.width / 2, size.height - 20) ); //将标签作为子节点增加之前定义的节点中
anode->addChild(pLabel, 1); CCSprite* pSprite = CCSprite::create("HelloWorld.png"); pSprite->setPosition( ccp(size.width/2, size.height/2) ); //将背景图片作为子节点增加之前定义的节点中
anode->addChild(pSprite, 0);
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 2476(第一道区间dp)

    题意:就是给定两个字符串,第一个是初始串,第二个是目标串,问你把初始串变到目标串最少需要多少串! 分析:此题分两步,第一步是假设开始的初始串是空串,然后就进行区间dp,dp[i][j]代表把区间[i, ...

  2. Optional优雅的使用null

    在我们学习和使用Guava的Optional之前,我们需要来了解一下Java中null.因为,只有我们深入的了解了null的相关知识,我们才能更加深入体会领悟到Guava的Optional设计和使用上 ...

  3. (转) SQL 命令

    省的自己总结了 1.终端启动MySQL:/etc/init.d/mysql start:(stop ,restart.)2.登录MySQL:mysql -uroot -p (用root账户登录),然后 ...

  4. Java之--Java语言基础组成(关键字、标识符、注释、常量和变量、运算符)

    Java语言基础组成-关键字.标识符.注释.常量和变量.运算符 Java语言由8个模块构成,分别为:1.关键字:2.标识符(包名.类名.接口名.常量名.变量名等):3.注释:4.常量和变量:5.运算符 ...

  5. html --- canvas --- javascript --- 绘图方法

    Canvas元素是HTML5的一部分,允许脚本语言动态渲染位图像. 如有疑问请访问链接:http://javascript.ruanyifeng.com/htmlapi/canvas.html < ...

  6. 对web日志文件实现按照人员、行为分类

    日志格式: method,time,name in,2015-05-06 17:37:46,Jenny1out,2015-05-06 17:37:46,Judith1in,2015-05-06 17: ...

  7. Oracle 学习用

    最近在学习Oracle数据库 ,公司用这个,学习到现在,唉!苦逼的程序员呀! 也只能在这里发发牢骚了,这个是转载的 ,发完睡觉! oracle sql语句 一.ORACLE的启动和关闭 .在单机环境下 ...

  8. 整理string类常见方法的使用说明

    整理String类的Length().charAt().getChars().replace().toUpperCase().toLowerCase().trim().toCharArray()使用说 ...

  9. C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期

    全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内 ...

  10. Scrum之Sprint会议

    Scrum的项目过程有一系列的Sprint组成. Sprint的长度一般控制在2-4周. 通过固定的周期保持良好的节奏. 产品的设计.开发.测试都在Sprint期间完成. Sprint结束时交付可以工 ...