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. 【JSON异常系列】new JSONObject对象时卡死原因

    8:47 2015/7/11 昨天晚上在使用JSON时,在创建JSONObject对象的时候不报错也不抛出异常.但就是new 不出来JSONObject的对象,这是一个非常奇葩的现象. 最后才发现原来 ...

  2. Activity(三)

    常用控件 EditView.TextView.Button 设置layout,在fragment_main.xml配置控件 配置可编辑文本控件factorOne.factorTwo,显示文本控件sym ...

  3. C# 用模板生成静态页

    最近在研究静态页输出的问题,找了一些资料.做了一个简单的模板模式的静态输出 模板代码: <html xmlns="http://www.w3.org/1999/xhtml"& ...

  4. 【27前端】字体图标 Font Face

    设计师做的高保真原型图,难免会用到艺术字体. 采用切片的方式,简单,粗暴,节省时间.除了retina屏其它兼容性也是一流.但是在修改的时候,会花很大的力气.即使只是修改文字大小,也需要重新切图,更别说 ...

  5. web.config详解

    在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代 ...

  6. sql远程连接卡死解决方法

    快捷键Win+R   输入CMD 回车  输入 netsh winsock reset 然后重启电脑  问题解决OK

  7. zoj1093 Monkey and Banana

    写到现在,发现1025,1076之前写的都是同一种题型:关于DAG的最长路(最短路). 首先要建立模型,根据关系,确定点和点之间的关系,构成一个DAG,前面几道题每个点之间距离默认为1,这一道题不同点 ...

  8. Prim算法(普里姆算法)

    描述: 一个连通图的生成树是指一个极小连通子图,它含有图中的全部顶点,但只有足以构成一棵树的 n-1 条边.我们把构造连通网的最小代价生成树成为最小生成树.而Prim算法就是构造最小生成树的一种算法. ...

  9. Python学习路径和个人增值(整合版)

    PS:内容来源于网络 一.简介         Python是一种面向对象.直译式计算机程序设计语言,由Guido van Rossum于1989年底发明.由于他简单.易学.免费开源.可移植性.可扩展 ...

  10. Java数据结构习题_算法分析

    2.设T1(N)=O(f(N)),T2(N)=O(f(N)),则: T1(N)-T2(N)=o(f(N))           False,若1位2N,2为N T1(N)/T2(N)=O(1)     ...