渲染节点

优质
小牛编辑
116浏览
2023-12-01

节点类

成员变量

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

方法

构造函数 new BK.Node()

参数:无

返回值:

类型名称备注
Object节点对象

例子:

var node = new BK.Node();

node.id = 1;
node.name = "test";
node.position = {x:100,y:100};
node.scale = {x:1.5,y:1.5};
node.rotation = {x:0,y:0,z:0};
node.hidden = false;
node.vertexColor = {r:1,g:1,b:1,a:1};
node.canUserInteract = true;
node.zOrder = 1;

BK.Director.root.addChild(node);

attachBody(body,offsetX,offsetY)

附着一个物理引擎中的刚体对象至当前节点

参数类型名称备注
bodyObject物理引擎中刚体对象
offsetXnumber刚体相对于节点坐标系原点的x偏移
offsetYnumber刚体相对于节点坐标系原点的y偏移

返回值:无

例子:

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

dispose()

销毁当前对象

返回值:无

例子:

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

addChild(sonNode)

添加子节点

参数类型名称备注
sonNodeObject子节点

返回值:无

例子:

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

getChildCount()

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

返回值:

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

例子:

node.getChildCount();

removeChildById(id,isDispose)

根据id移除子节点

参数类型名称备注
idnumber子节点标识id
isDisposeboolean是否销毁当前节点

返回值:

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

例子:

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

removeChildByName(name,isDispose)

根据name移除子节点

参数类型名称备注
namestring子节点名
isDisposeboolean是否销毁当前节点

返回值:

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

例子:

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

removeFromParent()

移除当前节点

参数 :无

返回值:无

例子:

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

queryChildAtIndex(index)

根据下标查询子节点

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

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

例子:

var childNode = parentNode.queryChildAtIndex(0);

queryChildById(id)

根据id查询子节点

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

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

例子:

var childNode = parentNode.queryChildById(100);

queryChildByName(name)

根据name查询子节点

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

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

例子:

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

hittest(postion)

判断是被点击

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

返回值:

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

例子:

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

convertToNodeSpace(worldPostion)

将一个基于世界坐标点转成基于本地坐标系的坐标点

参数类型名称备注
positionObject基于世界坐标点结构形如 {x:0,y:0}

例子:

var node = new BK.Node(); 
node.position = {x:100,y:100};
BK.Director.root.addChild(node);

//pos 为 0,0
var pos = node.convertToNodeSpace({x:100,y:100});

convertToWorldSpace(nodePostion)

将一个基于本地坐标系的坐标点转成基于世界坐标点

参数类型名称备注
positionObject基于世界坐标点结构形如 {x:0,y:0}

例子:

var node = new BK.Node(); 
node.position = {x:100,y:100};
BK.Director.root.addChild(node);

//pos 为 200,200
var pos = node.convertToWorldSpace({x:100,y:100});

例子

查看 script/demo/render/node_demo.js