BK.Node 节点

节点类

成员变量

变量 类型 名称 备注
id number 标识
name string 名称
position Object 位置 结构为 {x:0,y:0,z:0}
scale Object 缩放比例 结构为 {x:0,y:0} 分别标识x方向和y方向上的缩放系数
rotation Object 旋转 结构为 {x:0,y:0,z:0} 绕x,y,z轴逆时针旋转
vertexColor Object 顶点颜色 格式为 {r:1,g:1,b:1,a:1}。分别代表当前节点渲染顶点的红、绿、蓝、透明值。可以用此改变渲染颜色或透明值。颜色值范围是0~1。
transform Object 矩阵变换
parent BK.Node 父亲节点 只读属性。默认为undefined。若需重新修改父节点,应从旧节点中移除,再加入到新父节点中
children Array 子节点 只读属性。无子节点时默认为undefined。若需插入、删除节点,不可直接修改此属性
zOrder number z轴排序 越小越前
renderUpdate function 渲染回调 每次进行渲染时会回调
canUserInteract boolean 是否可以用户交互 默认为false
hidden boolean 是否隐藏
body Object 物理引擎中刚体 详情参考 BK.Physics.Body

方法

构造函数 new BK.Node()

参数:无

返回值:

类型 名称 备注
Object 节点对象

例子:

  1. var node = new BK.Node();
  2. node.id = 1;
  3. node.name = "test";
  4. node.position = {x:100,y:100};
  5. node.scale = {x:1.5,y:1.5};
  6. node.rotation = {x:0,y:0,z:0};
  7. node.hidden = false;
  8. node.vertexColor = {r:1,g:1,b:1,a:1};
  9. node.canUserInteract = true;
  10. node.zOrder = 1;
  11. BK.Director.root.addChild(node);

attachBody(body,offsetX,offsetY)

附着一个物理引擎中的刚体对象至当前节点
参数 类型 名称 备注
body Object 物理引擎中刚体对象
offsetX number 刚体相对于节点坐标系原点的x偏移
offsetY number 刚体相对于节点坐标系原点的y偏移

返回值:无

例子:

  1. var node = new BK.Node();
  2. var body = new BK.Physics.Body(2,0,0,{"x":150,"y":100});
  3. node.attachBody(body,0,0);

dispose()

销毁当前对象

返回值:无

例子:

  1. var node = new BK.Node();
  2. node.dispose();

addChild(sonNode)

添加子节点
参数 类型 名称 备注
sonNode Object 子节点

返回值:无

例子:

  1. var fatherNode = new BK.Node();
  2. var sonNode = new BK.Node();
  3. fatherNode.addChild(sonNode);

getChildCount()

获取子节点个数(包括当前节点)

返回值:

类型 名称 备注
number 子节点个数

例子:

  1. node.getChildCount();

removeChildById(id,isDispose)

根据id移除子节点
参数 类型 名称 备注
id number 子节点标识id
isDispose boolean 是否销毁当前节点

返回值:

类型 名称 备注
boolean 是否删除成功

例子:

  1. var fatherNode = new BK.Node();
  2. var sonNode = new BK.Node();
  3. sonNode.id = 123;
  4. //移除节点的同时销毁节点
  5. var removeSucc = fatherNode.removeChildById(123,true);

removeChildByName(name,isDispose)

根据name移除子节点
参数 类型 名称 备注
name string 子节点名
isDispose boolean 是否销毁当前节点

返回值:

类型 名称 备注
boolean 是否删除成功

例子:

  1. var fatherNode = new BK.Node();
  2. var sonNode = new BK.Node();
  3. sonNode.name= "nodeName";
  4. //移除节点的同时销毁节点
  5. var removeSucc = fatherNode.removeChildByName("nodeName",true);

removeFromParent()

移除当前节点

参数 :无

返回值:无

例子:

  1. var fatherNode = new BK.Node();
  2. var sonNode = new BK.Node();
  3. //移除节点的同时销毁节点
  4. var removeSucc = sonNode.removeFromParent();

queryChildAtIndex(index)

根据下标查询子节点

参数: 参数 | 类型 |名称 | 备注——————- | ——————- | ——————-| ——————-index | number | 下标 |

返回值: 类型 |名称 | 备注——————- | ——————- | ——————- Object | 节点对象 |

例子:

  1. var childNode = parentNode.queryChildAtIndex(0);

queryChildById(id)

根据id查询子节点

参数: 参数 | 类型 |名称 | 备注——————- | ——————- | ——————-| ——————-id | number | id |

返回值: 类型 |名称 | 备注——————- | ——————- | ——————- Object | 节点对象 |

例子:

  1. var childNode = parentNode.queryChildById(100);

queryChildByName(name)

根据name查询子节点

参数: 参数 | 类型 |名称 | 备注——————- | ——————- | ——————-| ——————-name | string | 节点名 |

返回值: 类型 |名称 | 备注——————- | ——————- | ——————- Object | 节点对象 |

例子:

  1. var childNode = parentNode.queryChildByName('first');

hittest(postion)

判断是被点击
参数 类型 名称 备注
position Object 待判断的位置 结构形如 {x:0,y:0} ,位置基于世界坐标系

返回值:

类型 名称 备注
boolean 是否被点击 true为被点击,false为未点击

例子:

  1. var node = new BK.Node();
  2. var clicked = node.hittest({x:1,y:1});
  3. if(clicked == true){
  4. //node was clicked
  5. }

convertToNodeSpace(worldPostion)

将一个基于世界坐标点转成基于本地坐标系的坐标点
参数 类型 名称 备注
position Object 基于世界坐标点 结构形如 {x:0,y:0}

例子:

  1. var node = new BK.Node();
  2. node.position = {x:100,y:100};
  3. BK.Director.root.addChild(node);
  4. //pos 为 0,0
  5. var pos = node.convertToNodeSpace({x:100,y:100});

convertToWorldSpace(nodePostion)

将一个基于本地坐标系的坐标点转成基于世界坐标点
参数 类型 名称 备注
position Object 基于世界坐标点 结构形如 {x:0,y:0}

例子:

  1. var node = new BK.Node();
  2. node.position = {x:100,y:100};
  3. BK.Director.root.addChild(node);
  4. //pos 为 200,200
  5. var pos = node.convertToWorldSpace({x:100,y:100});

例子

查看 script/demo/render/node_demo.js

原文: https://hudong.qq.com/docs/engine/api/BK.Node.html