1.Node

Cocos2d-x把渲染树上的每一个游戏元素抽象为一个节点,即Node。一切游戏元素都继承自Node,因此它们都具有Node所提供的特性。Node定义了一个可绘制对象的通用特性,包括位置、缩放、是否可见、旋转角度等。

节点的最基本的功能包括:(1)包含其他CCNode对象;(2)接受各种事件与回调函数,如定时器事件;(3)运行动作。

渲染树中包含着许多子节点的Node,类似一张画布,允许其他画布以不同的顺序叠加覆盖在自己上面,一旦改变该节点的缩放和旋转等特性,就会影响该节点(包括它的子节点)的显示效果。

2.坐标系

在Cocos2d-x中,存在两种坐标系。绘图坐标系和纹理坐标系。

绘图坐标系,它是最常见的坐标系,与OpenGL采用的坐标系相同,以左下角为原点,向右为x轴正方向,向上为y轴正方向。在Cocos2d-x中,一切绘图相关的操作都使用绘图坐标系,如游戏元素中的Position和AnchorPoint等属性。

纹理坐标系。纹理坐标系以左上角为原点,向右为x轴正方向,向下为y轴正方向。在Cocos2d-x中,只有从纹理中截取部分矩形时才使用这个坐标系,如Sprite的TextureRect属性。

3.绘图属性

利用Sprite所拥有的绘图相关属性,我们可以对精灵呈现的方式进行精确的控制。

(1)CCRect ContentSize:获取或设置此节点的内容大小。任何一个节点都需要确定它的内容大小,以便进行图形变换。 对于精灵来说,ContentSize是它的纹理显示部分的大小;对于层或场景等全屏的大型节点来说,ContentSize则是屏幕大小。

(2)CCPoint AnchorPoint:AnchorPoint用于设置一个锚点,以便精确地控制节点的位置和变换。AnchorPoint的两个参量x和y的取值通常都是0到1之间的实数,表示锚点相对于节点长宽的位置。例如,把节点左下角作为锚点,值为(0,0);把节点的中心作为锚点,值为(0.5,0.5);把节点右下角作为锚点,值为(1,0)。精灵的AnchorPoint默认值为(0.5,0.5),其他节点的默认值为(0,0)。

(3)Position用于设置节点的位置。由于Position指的是锚点在父节点中的坐标值,节点显示的位置通常与锚点有关。因此,如果层与场景保持默认的位置,只需把层中精灵位置设为窗口长宽的一半即可让它显示在屏幕中央。

(4)float Rotation:获取或设置节点的旋转角度。节点以自己的锚点为中心顺时针旋转一定量,单位是角度。旋转角度可以是任意实数。

(5)float Scale(以及float ScaleX与float ScaleY):Scale用于获取或设置节点的缩放比例。节点以锚点为中心缩放该比例。Scale的值代表整体缩放比例,而ScaleX与ScaleY分别代表X方向与Y方向的缩放比例。默认情况下,这三个属性的值都是1,表示节点不被缩放。如果设置Scale属性,则ScaleX和ScaleY都会随之变为相同的值。当然,我们也可以给ScaleX与ScaleY设置不同的值,那样Scale属性的值就没有意义了。

(6)bool Visible:获取或设置节点的可见性。当Visible为true时,节点会被显示,反之节点不会被显示。在节点不被显示的时候,也不会被调用绘图方法(visit与draw)。这是它的访问器方法:          bool isVisible();          void setVisible(bool visible);

(7)float SkewX与float SkewY:获取或设置斜切角度。节点以锚点为中心,平行x轴或y轴方向作一定角度的变形。SkewX为平行x轴顺时针的变形,SkewY为平行y轴逆时针的变形,单位为角度。SkewX与SkewY的默认值为0,表示节点没有斜切变形。

(8)int Tag:获取或设置节点的标号。在Cocos2d-x中,Tag的作用类似于标识符,以便快速地从节点的所有子节点中找出所需节点。Tag可以用于定位子节点,因此添加到同一节点的所有CCNode之中,不能有两个节点的Tag相同,否则就给定位带来了麻烦。与Tag相关的方法有getChildByTag、removeChildByTag等。

(9)void* UserData:获取或设置与节点相关的额外信息。UserData为void*类型,我们可以利用这个属性来保存任何数据。

(10)Node的其他属性。

4.节点的组织

组织节点的基本方式:addChild方法。在介绍addChild方法时,我们是以向场景中添加层作为例子讲解的。而事实上,addChild是Node提供的方法,我们可以把任何的Node添加到另一个节点之中。除了添加节点之外,Node还提供了一系列管理节点的方法。

节点与坐标系——Cocos2d-x学习历程(十)的更多相关文章

  1. 场景切换特效Transition——Cocos2d-x学习历程(十二)

    Transition 场景切换 在游戏中通常会用到一些场景的切换,比如从加载界面切换到欢迎界面.游戏中的所有场景存放在一个栈中,有且只有一个场景可以处于激活状态.直接replaceScene(即不适用 ...

  2. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  3. 大三仍是Linux系统小白的我给大家讲讲学习历程

    我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为 ...

  4. 来自一个电子狂的stm32学习历程

    文章尾部有学习时的一些视频资料在学的可以看看那么我们就进入今天的主题我stm32的学习历程 在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的 ...

  5. JS高级学习历程-6

    PHP菜鸟学习历程-6 [闭包案例] 1 闭包创建数组 <!DOCTYPE html> <html lang="en"> <head> < ...

  6. Netty 学习(十):ChannelPipeline源码说明

    Netty 学习(十):ChannelPipeline源码说明 作者: Grey 原文地址: 博客园:Netty 学习(十):ChannelPipeline源码说明 CSDN:Netty 学习(十): ...

  7. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...

  8. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  9. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

随机推荐

  1. 【JS】导出table到excel,同时兼容FF和IE

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. HTML4如何让一个DIV居中对齐?float输入日志标题

    float:left,right clear:both 如何让一个DIV居中对齐? 第一步:设置外层的DIV的text-align:center; 第二步:设置里层的DIV的margin:auto 以 ...

  3. jsp页面适应手机页面

    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scal ...

  4. 搜索+剪枝——运筹帷幄 (road.cpp)

    运筹帷幄 (road.cpp) [题目描述] 刘邦军行至迷糊林,见其中瘴气围绕,又有青狼猛虎之兽,难于前行. 已知迷糊林是一个共有n个结点的图,点与点之间共有m条道路相连接,每条路有参数t,c,分别表 ...

  5. C语言学习的经典书籍--转载

    推荐前言: 原文出处:http://book.douban.com/doulist/338101/ 和其他语言相比(例如C++),C语言是一门比较“小”的语言,可以在较短的时间内入门.但是由于C的很强 ...

  6. 编写jquery插件

    一.类级别($.extend) 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(o ...

  7. 通过js控制html页面不能右键,复制等

    <script type="text/javascript"> //Method one //<![CDATA[ //document.oncontextmenu ...

  8. NET Core开发-读取配置文件Configuration

    ASP.NET Core开发-读取配置文件Configuration   ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NE ...

  9. win7下设置 WiFi AP

    开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让计算机变成无线路由器.实现共享上网. 1.以管理员身份运行命令提示符: “开始”---在搜索栏输入“cmd”-- ...

  10. eclipse 改包名

    转载自: http://www.2cto.com/kf/201304/206747.html 1.在项目上右键,选择android tools->rename application packa ...