• Cocos2d-x中的坐标系



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

    纹理坐标系。纹理坐标系以左上角为原点,向右为x轴正方向,向下为y轴正方向,如图3-2所示。在Cocos2d-x中,只

    有从纹理中截取部分矩形时才使用这个坐标系,如 CCSprite 的 TextureRect 属性。 

     
     
     
     
     
     
    简单地接触了Cocos2d-x中的坐标系后,下面我们来介绍CCSprite所拥有的绘图相关属性。利用这些属性,我们可以对精 灵呈现的方式进行精确的控制
     
     

    CCRect ContentSize:获取或设置此节点的内容大小。任何一个节点都需要确定它的内容大小,以便进行图形变换。对于

    精灵来说,ContentSize 是它的纹理显示部分的大小;对于层或场景等全屏的大型节点来说,ContentSize 则是屏幕大小。 
     
     
    CCPointAnchorPoint与CCPointPosition:AnchorPoint用于设置一个锚点,以便精确地控制节点的位置和变换。 AnchorPoint 的两个参量 x 和 y 的取值通常都是 0 到 1 之间的实数,表示锚点相对于节点长宽的位置。例如,把节点左下角 作为锚点,值为(0,0);把节点的中心作为锚点,值为(0.5,0.5);把节点右下角作为锚点,值为(1,0)。精灵的 AnchorPoint 默认值为(0.5,0.5),其他节点的默认值为(0,0)。图 3-3 演示了精灵三个不同锚点的值及其位置。 
     
     
    Position用于设置节点的位置。由于Position指的是锚点在父节点中的坐标值,节点显示的位置通常与锚点有关。
     
     因此,如果层与场景保持默认的位置,只需把层中精灵位置设为窗口长宽的一半即可让它显示在屏幕中央。
     
     
    • 对于场景或层等大型节点,它们的IgnoreAnchorPointForPosition属性为true,此时引擎会认为AnchorPoint永远为(0,0);

      而其他节点的该属性为 flase,它们的锚点不会被忽略。

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

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

     
       boolVisible:获取或设置节点的可见性。当Visible为true时,节点会被显示,反之节点不会被显示。在节点不被显示 的时候,也不会被调用绘图方法(visit 与 draw)。这个属性与众不同的是,它的访问器没有遵循属性的命名规范。以下 为它的访问器方法:
     
     
     
    ccnode  属性
     
       

    CCArray* Children

    page46image11648

     获取保存了该节点所有子引用的数组

     CCNode* Parent

     获取或设置该节点的父节点

     CCCamera* CameraRETURN

     获取或设置该节点的摄像机状态。摄像机  (CCCamera)定义了绘制该节点时的视点,  通常用于实现特效

     CCGridBase* Grid

     获取或设置该节点的网格特效状态。网格应用  于绘图平面上,可以实现水纹等3D特效

     CCGLProgram* ShaderProgram

     获取或设置该节点的Shader程序。CCGLProgram  是OpenGL的glProgram的封装

     CCActionManager*ActionManager

    page46image24808

     获取或设置该节点所使用的动作管理器。当为节
     点设置了新的动作管理器时,正在执行的动作
     都会被丢弃。动作管理器的相关内容将在第4章介绍

    46

    Cocos2d-x 高级开发教程



     CCScheduler* Scheduler 

     获取或设置该节点所使用的计时器管理器。  当为节点设置了新的计时器管理器时,
     正在运行的计时器都会被丢弃

     
     
     
    节点的组织
     
     

     方法

     描述

     addChild(CCNode* child)

     把child添加到当前节点之中

     removeFromParentAndCleanup  (bool cleanup)

     把当前节点从其父节点中移除,如果  cleanup为true,则执行clean方法 

     removeChild(CCNode* child,  bool cleanup)

     从当前节点中移除child节点,如果
     cleanup为true,则调用child的clean方法

     removeChildByTag(int  tag, bool cleanup)

     从当前节点中移除标号为tag的节点

     removeAllChildrenWithCleanup  (bool cleanup) 

    page47image24800

     移除当前节点的所有子节点

     getChildByTag(int tag)

     返回当前节点中标号为tag的节点

     cleanup

     停止此节点的全部动作与计时器

     
  • 相关阅读:
    [Solution] DI原理解析及Castle、Unity框架使用
    [Solution] AOP原理解析及Castle、Autofac、Unity框架使用
    [C#] CSharp 基本语法
    [Architect] Abp 框架原理解析(5) UnitOfWork
    [Code] C#与js的正则表达式
    [SQL] SQL SERVER基础语法
    [Tool] PowerDesigner
    [JS] javascript基础语法
    SharedPreferences 的另一种场景的用法
    Eclipse 工程迁移到 Android Studio
  • 原文地址:https://www.cnblogs.com/AbelChen1991/p/3813948.html
Copyright © 2020-2023  润新知