创建一个二维向量
new cc.Vec2(100,100); cc.v2(200,200); cc.p(150,150);注意:从2.0版本以后cc.p已经被弃用,建议使用cc.v2
向量常用的方法有:
var src = cc.v2(150,150); var dst = cc.v2(400,400); var r = dst.sub(src); //相减 r = dst.subSelf(src); //相减,同时返回值也会赋给dst本身,如本例中,dst会变为Vec2 {x: 250, y: 250}; r = dst.add(src); //相加 r = dst.addSelf(src); //相加,同时返回值也会赋给dst var length = dst.mag(); //向量的长度我当前用的版本为2.0.9,向量计算用以上方法,之前的方法如 cc.pAdd(), cc.pSub(), cc.pLength()等方法已不可用(具体从哪个版本开始未可知,感兴趣的读者可自行查阅)。
两种方式创建
new cc.Size(100,100); cc.size(200,200);同样的cc.Rect也有两种创建方式`
new cc.Rect(x,y,w,h) cc.rect(x,y,w,h) 如var rect = cc.rect(0,0,200,200);x,y代表矩形左下角点的坐标 w,h代表矩形的宽高
cc.Rect常用方法
var res = rect.contains(cc.v2(100,100)); //是否包含点,返回bool值 cc.log(res); var c = rect.center; //矩形中心点 c = rect.xMin; //x轴方向最小值,即矩形左下角点的x坐标 cc.log(c); var b = rect.intersects(cc.rect(100,100,200,200)); //两个矩形是否相交 cc.log(b);节点坐标(相对坐标)和屏幕坐标(世界坐标)
上图,做参考
图中,Canvas位置为(480,320),大小为(960,640), item节点坐标(相对坐标)为(0,0),大小(100,100),锚点(0.5,0.5);
两种相对于节点原点的方式 1.以左下角为原点 2.以锚点为原点(AR)
节点坐标转换为世界坐标
//以节点左下角为原点,相对世界坐标(0,0)点的位置 this.node.convertToWorldSpace(cc.v2(0,0)); //值为cc.v2(430,270) //以锚点为原点的世界坐标 this.node.convertToWorldSpaceAR(cc.v2(0,0)); //值为cc.v2(480,320)世界坐标转换为节点坐标
var w_pos = cc.v2(500,500); //定义一个世界坐标 this.node.convertToNodeSpace(w_pos); //值为(70,230),因为节点的世界坐标为(430,270) this.node.convertToNodeSpaceAR(w_pos); //值为(20,180),因为节点的AR世界坐标为(480,320)PS:因为编辑器默认是带AR计算相对坐标位置的,所以,我们通常也是用带AR的函数。
触摸事件得到的坐标是世界坐标,可以转换为节点坐标
this.node.on(cc.Node.EventType.TOUCH_START,function(t){ var w_pos = t.getLocation(); //得到的是世界坐标 cc.log(w_pos); // var p = this.node.convertTouchToNodeSpaceAR(t); 注意此方法从v2.0版本已经被弃用,不推荐使用 var p = this.node.convertToNodeSpaceAR(w_pos); cc.log(p); },this);上图第一个为世界坐标,第二个为转换后的节点坐标