cc.Vec2
1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量;
2: cc.pSub: 向量相减;
3: cc.pAdd: 向量相加;
4: cc.pLength: 向量长度;

cc.Size/cc.Rect
1: cc.Size: 包含宽度和高度信息的对象 {width: 100, height: 100};
2: new cc.Size(w, h), cc.size(w, h)创建一个 大小对象;
3: cc.Rect: 矩形对象 new cc.Rect(x, y, w, h); cc.rect(x, y, w, h); {x, y, width, height};
4: contains(Point): 点是否在矩形内;
5: intersects : 两个矩形是否相交;

creator坐标系
1: 世界(屏幕)坐标系;
2: 相对(节点)坐标系,两种相对节点原点的方式(1) 左下角为原点, (2) 锚点为原点(AR);
3: 节点坐标和屏幕坐标的相互转换; 我们到底使用哪个?通常情况下带AR;
4: 获取在父亲节点坐标系下(AR为原点)的节点包围盒;
5: 获取在世界坐标系下的节点包围盒;
6: 触摸事件对象世界坐标与节点坐标的转换;

        // 获取节点的包围盒, 相对于父亲节点坐标系下的包围盒
var box = this.node.getBoundingBox();
console.log('box:',box); // 世界坐标系下的包围盒
var w_box = this.node.getBoundingBoxToWorld();
console.log(w_box); this.node.on(cc.Node.EventType.TOUCH_START, function(t) {
var w_pos = t.getLocation();
var pos = this.node.convertToNodeSpaceAR(w_pos);
console.log(pos); pos = this.node.convertTouchToNodeSpaceAR(t);
console.log("====", pos);
}, this); // 我要把当前这个sub移动到世界坐标为 900, 600;
// 把世界坐标转到相对于它的父亲节点的坐标
var node_pos = this.node.parent.convertToNodeSpaceAR(cc.p(500, 600));
this.node.setPosition(node_pos); // 相对于this.node.parent这个为参照物,AR为原点的坐标系
// 获取当前节点的世界坐标;
this.node.convertToWorldSpaceAR(cc.p(0, 0));

常用坐标函数

        var pos = new cc.Vec2(100, 100);
console.log('Vec2 x:%f,y:%f', pos.x, pos.y); pos = cc.v2(200.45, 200.94);
console.log('v2 x:%f,y:%f', pos.x, pos.y); pos = cc.p(300, 300);
console.log('p x:%f,y:%f', pos.x, pos.y); var src = cc.p(50, 11);
var dst = cc.p(100, 100);
var dir = cc.pSub(dst, src); var len = cc.pLength(dir);
console.log('dir.pLength:%f,dir.x:%f,dir.y:%f', len, dir.x,dir.y); var s = new cc.Size(100, 100);
console.log('Size x:%f,y:%f,w:%f,h:%f', s.x, s.y, s.width, s.height); s = cc.size(200, 200);
console.log('Size x:%f,y:%f,w:%f,h:%f', s.x, s.y, s.width, s.height);
var r = new cc.Rect(0, 0, 100,100);
console.log(r); r = cc.rect(0, 0, 200, 200);
console.log(r);
var ret = r.contains(cc.p(300, 300));
console.log(ret);
var rhs = cc.rect(100, 100, 100, 100);
ret = r.intersects(rhs);
console.log(ret); // 节点坐标转到屏幕坐标 cc.p(0, 0)
var pos = this.node.convertToWorldSpace(cc.p(0, 0)); // 左下角为原点的 cc.p(430, 270)
console.log('x:%f,y:%f',pos.x, pos.y);
pos = this.node.convertToWorldSpaceAR(cc.p(0, 0)); // 锚点为原点 cc.p(480, 320)
console.log('x:%f,y:%f', pos.x, pos.y);
// end var pos = cc.p(480, 320); var node_pos = this.node.convertToNodeSpace(pos);
console.log('x:%f,y:%f', node_pos.x, node_pos.y); // cc.p(50, 50) node_pos = this.node.convertToNodeSpaceAR(pos);
console.log('x:%f,y:%f', node_pos.x, node_pos.y);// cc.p(0, 0)

cc.Node—坐标系统的更多相关文章

  1. cc.Node—场景树

    对于cc.Node我分了四个模块学习: 1.场景树,2.事件响应,3.坐标系统,4.Action的使用:在此记录经验分享给大家. 场景树 1: creator是由一个一个的游戏场景组成,通过代码逻辑来 ...

  2. cc.Node 的坐标空间与ACTION的学习

    1.创建二维的向量坐标 //创建向量坐标方法一 let new_pos1 = new cc.Vec2(100, 100); //创建向量坐标方法二 let new_pos2 = cc.v2(200, ...

  3. Cocos Creator cc.Node.点击事件

    触摸事件 1.触摸事件的类型:START触摸启动,MOVED移动,ENDED弹起来,CANCEL取消; ENDED和CANCEL区别是ENDED物体内弹起来,CANCEL是在物体外范围弹起. 2.监听 ...

  4. <7>Cocos Creator 节点 cc.Node

    1.简介 节点(cc.Node)是渲染的必要组成部分.所有需要在游戏场景中显示的内容都必须是节点或者依附于节点之上.节点负责控制显示内容的位置.大小.旋转.缩放.颜色等信息. 2.节点属性 1: na ...

  5. cc.Node—事件响应

    触摸事件1: 触摸事件类型: START, MOVED, ENDED(物体内), CANCEL(物体外);2: 监听触摸事件: node.on(类型, callback, target(回掉函数的th ...

  6. cc.Node—Action

    1: Action类是动作命令,我们创建Action,然后节点运行action就能够执行Action的动作; 2: Action分为两类: (1) 瞬时就完成的ActionInstant, (2) 要 ...

  7. Cocos2d-JS坐标系统

    标准屏幕坐标系 如果接触过iOS,Android,Windows Phone等系统的应用开发,或使用DOM,CSS开发过Web网页,开发者会非常熟悉所谓的标准屏幕坐标系:左上角为原点,向右为X轴正方向 ...

  8. Cocos2d-x 核心概念 - Node中的重要操作

    作为跟类,Node有很多的重要的函数 local childNode = cc.Node:create() --创建节点 node:addChildNode(childNode,0,123) --创建 ...

  9. cc.Sprite

    Classcc.Sprite Defined in: CCSprite.js Extends cc.NodeRGBA Class Summary Constructor Attributes Cons ...

随机推荐

  1. 异常备忘:java.lang.UnsupportedClassVersionError: Bad version number in .class file

    转自:https://blog.csdn.net/myyugioh/article/details/7724915 今天在导入一个工程时,编译并打包到Tomcat后,发现出现java.lang.Uns ...

  2. 在linq语言中,不能准确按拼音排序(转)

    在项目中,利用OrderBy/OrderByDescending, ThenBy/ThenByDescending这4个方法排序时,发现了这样的问题:在本机测试,能正确按拼音排序:但是放上服务器是,就 ...

  3. Ubuntu 14.04.1 配置 Android 源码开发环境(jdk版本切换)(转载)

    转自:http://www.cnblogs.com/ren-gh/p/4248407.html # Ubuntu 14.04.1 1.更新源: sudo apt-get update 安装vim工具: ...

  4. UVA1437 String painter

    传送门 我们先考虑从一个空白串变成\(B\),这样的话用区间dp,区间dp,设\(f[l][r]\)表示区间\((l,r)\)的最小次数,当\(l==r\)时为\(1\),当\(s[l]==s[r]\ ...

  5. luogu P1309 瑞士轮【排序】

    题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...

  6. 【原创】CentOS 6.5 中安装 Mysql 5.6,并远程连接Mysql

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.在安装CentOS时,若选择的是Basic Server(可支持J2EE开发),则新安装好的CentOS系统中默认是已经安装了一个mysq ...

  7. sublime 解决中文乱码

    步骤: 在Sublime Text里,按ctrl+`,打开Console,一次性输入如下代码: import urllib.request,os; pf = 'Package Control.subl ...

  8. [POI2001]Gra绿色游戏

    Description 绿色游戏是一种两人游戏,双方分别称Ann和Billy.游戏的内容主要是轮流在棋盘上移动一颗棋子.棋盘上的点一部分是绿色的,其余是白色的:全部从1至a+b编号.编号1至a的点属于 ...

  9. 贪心 UVALive 6834 Shopping

    题目传送门 /* 题意:有n个商店排成一条直线,有一些商店有先后顺序,问从0出发走到n+1最少的步数 贪心:对于区间被覆盖的点只进行一次计算,还有那些要往回走的区间步数*2,再加上原来最少要走n+1步 ...

  10. JDK常用类解读--StringBuffer、StringBuilder

    上一篇博客讲到String对象一旦被创建该内容就不能被修改了如: String s = "hello world"; s.substring(6); s.replace(" ...