cc.Node.场景树

场景树

1creator是由一个一个的游戏场景组成,通过代码逻辑来控制场景跳转.

2creator场景是一个树形结构

3父节点,子接地那 canvas可以当做根点击,然后再场景里添加精灵 UI等等节点

4cc.Node是整个场景数中的节点对象.

5每个节点只要是场景里面的, 任何一个节点都有一个cc.Node

cc.Node属性

1 name:获取节点的名字

2 active:设置节点的可见性

3 position:相对坐标,相对应父节点的位置.

4 rotation:选中,数学是逆时针为正,creator是顺时针为正

假如要按照数学旋转90度,creator要旋转270度,也就是360减去90度

5 scale:缩放

6 anchor:锚点左下角(0,0)右上角(1,1)锚点可以超过这个范围

7 Size:大小,响应触摸和这个大小有关系

8 坐标系:以左下角为坐标原点(0,0) 垂直线为x,竖直线为y.

9 Color:环境的颜色,比如鼠标滑到上面 可以让他变灰等

10 Opacity:透明度

11 Skew:扭曲

12 Group:分组 碰撞检测, 比如飞机大战,敌人×××,飞机

13 parent:父节点的cc.Node

14 children/childrenCount:孩子节点数的数组

14 tag节点的标签

cc.Component 组件

1所有的组件都扩展自cc.Component

2每个cc.Component组件实例都有个node成员,指向他关联节点的cc.node

3name每一个cc.Component通过name属性可以获得节点的名字;

4组件实例入口函数:

onLoad:组件加载的时候调用;

start:组件第一次激活时调用,并且是在第一次update之前

update(dt):每次游戏刷新的时候调用;

不常用的

lateUpdate(dt):在update之后调用

enabled:组件是否被启动

onEnable:组件被允许的时候调用     就是被激活的时候

onDisable:组件不被允许的时候调用

代码组件

1每个代码组件实例都继承自cc.Component(构造函数),

所以有一个node数据成员指向cc.node

2cc.Class({...})定义到处了一个新的类的构造函数,

Class类似一个接口, 他的参数是一个表,首先他内部会创建一个函数对象作为返回值

然后 判断你有没有extend这个key,如果有那么他就会先继承这个key,表示父类,

并且先执行父类的构造函数, 然后遍历所有不是extend的参数把他们作为key加入进来

3当为每个节点添加组件的时候,会实例化(new)这个组件类,生成组件实例.

4当组件加载运行的时候,代码函数里面的this指向这个组件的实例.

5代码组件在挂载的时候扩展自(cc.Component)里面有个成员指向节点

所以在代码组件里面,可以使用this.node来访问这个组件实例挂载的节点对象

6通过this.node 就是指向他挂载的节点.

7通过节点可以使用他的属性方法.

8this就是当前的组件的实例.

9节点可以挂载很多个组件.

10根节点 其实就是场景一个Canvas的父节点就是场景

11遍历子节点

每个数组元素就是一个cc.Node

        //返回的是数组
        var childer = this.node.children;
        //遍历数组
        for(var i = 0;i < childer.length;i++){
            console.log(childer[i].name);
        }

场景数相关方法

1 代码中创建一个节点 new cc.Node()

var new_node = new cc.Node()

2 addChild 添加一个子节点到场景数

this.node.addChild(new_node)

3 removeFromParent 节点从父节点删除,

new_node.removeFromParent()

4 removeAllChildren删除所有的节点

this.node.removeAllChildren();

5查找子节点 getChildByName/getChildByTag/getChildByIndex

局部查找

如果有同名的 那就先返回先找到的

var item = this.node.getChildByName(节点名)

全局查找 我希望找这个节点的时候全局来搜索,消耗时间

他的原理就是从根节点开始查找.

var item = cc.find("Canvas/parent/item1")

6 setPosition设置坐标

getPosition()获取坐标相对位置

7层叠关系

在crator里面 谁在左边数型里面越靠下,

那么他绘制顺序越靠前,覆盖下面的图像

他就是ZOrder 默认ZOrder是0

如果想让他更靠前  可以通过setLoaclZOrder来设置

先获取这个节点 然后这只ZOrder 数值越大 越靠前

var a2= this.node.getChildByName("a2");

a2.setLocalZOrder(1);

原文地址:http://blog.51cto.com/12158490/2063414

时间: 2024-08-30 08:29:22

cc.Node.场景树的相关文章

cocos creator 002 场景树 Node 的属性 学习

场景树 Node 的属性 学习 cc.Class Onload 读取 node的各种属性 读取 修改 自定义自己的属性 读取修改 start 中 自定义自己的方法 自定义自己的属性在 properties 中 添加自定义属性直接在面板上修改 自定义属性 如果不想显示 内部变量 则前面加 下划线 _ 内部函数 _test() 或者专门设置一个车 ctro(){} 处理自定义属性,方法 -> PPT 访问父亲 this.node.parent.name --> Canvas访问孩子 this.no

cc.Node.事件

触摸事件 1.触摸事件的类型:START触摸启动,MOVED移动,ENDED弹起来,CANCEL取消; ENDED和CANCEL区别是ENDED物体内弹起来,CANCEL是在物体外范围弹起. 2.监听触摸事件,node.on(类型,callback,target(回调函数的this),[useCapture]) 3.触摸事件,node.on(类型,callback,target(回调函数的this),[useCapture])       //(1)监听触摸事件 向引擎底层注册回调函数     

cocos creator基础-cc.Node(三)坐标空间转换

cc.Vec2 1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二维向量(这个2.0被废弃了,用cc.v2替代) 2: cc.pSub: 向量相减 cc.pSub(v1, v2) 被废弃,用v1.sub(v2)替代 3: cc.pAdd: 向量相加; cc. cc.pAdd(v1, v2) 被废弃,用v1.add(v2)替代 4: cc.pLength: 向量长度; cc.pLength(dir)被废

将场景树转为XML的函数(直接使用)

日前遇到些运行时场景树中未按预期销毁的GameObject 需要打印出场景树结构做前后比较,所以写个这个简单的函数 public static void ExchangeHierarchy2XmlNode(Transform transParant, System.Xml.XmlNode node,System.Xml.XmlDocument doc) { int indexCount = transParant.transform.childCount; string name = trans

cc.Node.动作

Action动作 1.Action类是动作命令,我们创建action,然后节点运行action就能够执行Action的动作 2.Action分为两类: (1)即时动作:       瞬时就完成    ActionInstant (2)时间间隔动作:要一段时间才能完成ActionIntervial 3.runAction:节点运行这个action动作. 5.以下是常用action,TO和BY的区别是: TO是目标.  BY是变化. 6.cc.MoveTo cc.MoveTo MoveTo:移动到指

leetcode_116题——Populating Next Right Pointers in Each Node(树,广度优先搜索)

Populating Next Right Pointers in Each Node Total Accepted: 49664 Total Submissions: 137310My Submissions Question Solution Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } Populate each next po

Cocos2d-JS中的cc.LabelTTF

cc.LabelTTF是使用系统中的字体,它是最简单的标签类.cc.LabelTTF类图如下图所示,可以cc.LabelTTF继承了cc.Node类,具有cc.Node的基本特性. LabelTTF类图 如果我们要展示如图所示的Hello World文字,我们可以使用cc.LabelTTF实现. cc.LabelTTF实现的Hello World文字 cc.LabelTTF实现的Hello World文字主要代码如下: var HelloWorldLayer = cc.Layer.extend(

cocos2d-x开发: 场景实体(entity)管理

公司现在开新项目,主题的框架部分都是我自己在做,不用受到别人的牵制,所以还算是比较的自由,很好发挥. 游戏并不大,所以需要用到的地方并不多.今天花了一些时间写了场景entity管理的部分代码,还没有完全的完善. 我的思路是这样的, entity manager提供注册一个update( dt )的帧频回调事件, 在每一次回调的时候都会遍历管理的所有的entity,调用entity的update( dt )帧频回调.何为帧频回调?我解释一下,cocos2d-x在c++那边是可以重写onDraw()

Cocos2d-x Lua Node与Node层级架构

Cocos2d-x Lua Node与Node层级架构 Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节点可以是场景.层.精灵.菜单.文本.地图和粒子系统等任何对象.节点的层级结构如下图所示. 节点的层级结构 这些节点有一个共同的父类Node,Node类图如下图所示.Node类是Cocos2d-x Lua最为重要的根类,它是场景.层.精灵