cocos creator基礎(chǔ)-cc.Node坐標(biāo)空間轉(zhuǎn)換

cc.Vec2

1: cc.Vec2 二維向量坐標(biāo), 表結(jié)構(gòu){x: 120, y: 120}; cc.v2(x, y) 創(chuàng)建一個(gè)二維向量 cc.p() 創(chuàng)建一個(gè)二維向量(這個(gè)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: 向量長(zhǎng)度; cc.pLength(dir)被廢棄,用dir.mag(); 替代

cc.Size/cc.Rect

cc.Size即將被取消吏颖,用 cc.Vec2替代

1: cc.Size: 包含寬度和高度信息的對(duì)象 {width: 100, height: 100};

2: new cc.Size(w, h), cc.size(w, h)創(chuàng)建一個(gè) 大小對(duì)象;

3: cc.Rect: 矩形對(duì)象 new cc.Rect(x, y, w, h); cc.rect(x, y, w, h); {x, y, width, height}

4: contains(Point): 點(diǎn)是否在矩形內(nèi);

???? var r = new cc.Rect(0, 0, 100, 100); // new

???? var ret = r.contains(cc.v2(200, 200));

5: intersects : 兩個(gè)矩形是否相交;

???? var r2 = new cc.Rect(100, 100, 100, 100); // new

????r.intersects(r2);

creator坐標(biāo)系

1: 世界(屏幕)坐標(biāo)系;

????坐標(biāo)原點(diǎn)在左下角

2: 相對(duì)(節(jié)點(diǎn))坐標(biāo)系,兩種相對(duì)節(jié)點(diǎn)原點(diǎn)的方式

????(1) 左下角為原點(diǎn),

???? this.node.convertToWorldSpace(cc.v2(0, 0));

???? this.node.convertToNodeSpace(w_pos);

????(2) 錨點(diǎn)為原點(diǎn)(AR)

???? this.node.convertToWorldSpaceAR(cc.v2(0, 0));

????this.node.convertToNodeSpaceAR(w_pos);

????兩套API,帶AR后綴和不帶

3: 節(jié)點(diǎn)坐標(biāo)和屏幕坐標(biāo)的相互轉(zhuǎn)換; 我們到底使用哪個(gè)辜窑?通常情況下帶AR;

4: 獲取在父親節(jié)點(diǎn)坐標(biāo)系下(AR為原點(diǎn))的節(jié)點(diǎn)包圍盒;

????this.node.getBoundingBox();

5: 獲取在世界坐標(biāo)系下的節(jié)點(diǎn)包圍盒;

????this.node.getBoundingBoxToWorld();

6: 觸摸事件對(duì)象世界坐標(biāo)與節(jié)點(diǎn)坐標(biāo)的轉(zhuǎn)換;

cc.Class({

? ? extends: cc.Component,

? ? properties: {

? ? ? ? // foo: {

? ? ? ? //? ? default: null,? ? ? // The default value will be used only when the component attaching

? ? ? ? //? ? ? ? ? ? ? ? ? ? ? ? ? ?to a node for the first time

? ? ? ? //? ? url: cc.Texture2D,? // optional, default is typeof default

? ? ? ? //? ? serializable: true, // optional, default is true

? ? ? ? //? ? visible: true,? ? ? // optional, default is true

? ? ? ? //? ? displayName: 'Foo', // optional

? ? ? ? //? ? readonly: false,? ? // optional, default is false

? ? ? ? // },

? ? ? ? // ...

? ? },

? ? // use this for initialization

? ? onLoad: function () {

? ? ? ? /*var w_pos = new cc.Vec2(100, 100);

? ? ? ? console.log(w_pos);

? ? ? ? w_pos = cc.v2(200, 200);

? ? ? ? console.log(w_pos);

? ? ? ? w_pos = cc.p(300, 300);

? ? ? ? console.log(w_pos);

? ? ? ? var src = cc.p(0, 0);

? ? ? ? var dst = cc.p(100, 100);

? ? ? ? var dir = cc.pSub(dst, src);

? ? ? ? var len = cc.pLength(dir);

? ? ? ? console.log(len);

? ? ? ? var s = new cc.Size(100, 100);

? ? ? ? console.log(s);

? ? ? ? s = cc.size(200, 200);

? ? ? ? console.log(s);

? ? ? ? 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);*/

? ? ? ? // 節(jié)點(diǎn)坐標(biāo)轉(zhuǎn)到屏幕坐標(biāo) cc.p(0, 0)

? ? ? ? var w_pos = this.node.convertToWorldSpace(cc.p(0, 0)); // 左下角為原點(diǎn)的? ?cc.p(430, 270)

? ? ? ? console.log(w_pos);

? ? ? ? w_pos = this.node.convertToWorldSpaceAR(cc.p(0, 0)); // 錨點(diǎn)為原點(diǎn) cc.p(480, 320)

? ? ? ? console.log(w_pos);

? ? ? ? // end?

? ? ? ? var w_pos = cc.p(480, 320);

? ? ? ? var node_pos = this.node.convertToNodeSpace(w_pos);

? ? ? ? console.log(node_pos); // cc.p(50, 50)

? ? ? ? node_pos = this.node.convertToNodeSpaceAR(w_pos);

? ? ? ? console.log(node_pos); // cc.p(0, 0)

? ? },

? ? start: function(){

? ? ? ? // 獲取節(jié)點(diǎn)的包圍盒, 相對(duì)于父親節(jié)點(diǎn)坐標(biāo)系下的包圍盒

? ? ? ? var box = this.node.getBoundingBox();

? ? ? ? console.log(box);

? ? ? ? // 世界坐標(biāo)系下的包圍盒

? ? ? ? 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);

? ? ? ? // 我要把當(dāng)前這個(gè)sub移動(dòng)到世界坐標(biāo)為 900, 600;

? ? ? ? //?

? ? ? ? // 把世界坐標(biāo)轉(zhuǎn)到相對(duì)于它的父親節(jié)點(diǎn)的坐標(biāo)

? ? ? ? var node_pos = this.node.parent.convertToNodeSpaceAR(cc.p(900, 600));

? ? ? ? this.node.setPosition(node_pos); // 相對(duì)于this.node.parent這個(gè)為參照物,AR為原點(diǎn)的坐標(biāo)系

? ? ? ? // end?

? ? ? ? // 獲取當(dāng)前節(jié)點(diǎn)的世界坐標(biāo);

? ? ? ? this.node.convertToWorldSpaceAR(cc.p(0, 0));

? ? }

? ? // called every frame, uncomment this function to activate update callback

? ? // update: function (dt) {

? ? // },

});

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末所禀,一起剝皮案震驚了整個(gè)濱河市方面,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌色徘,老刑警劉巖恭金,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異褂策,居然都是意外死亡蔚叨,警方通過(guò)查閱死者的電腦和手機(jī)床蜘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)辙培,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔑水,“玉大人,你說(shuō)我怎么就攤上這事扬蕊〔蟊穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵尾抑,是天一觀的道長(zhǎng)歇父。 經(jīng)常有香客問(wèn)我,道長(zhǎng)再愈,這世上最難降的妖魔是什么榜苫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮翎冲,結(jié)果婚禮上垂睬,老公的妹妹穿的比我還像新娘。我一直安慰自己抗悍,他們只是感情好驹饺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著缴渊,像睡著了一般赏壹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衔沼,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天蝌借,我揣著相機(jī)與錄音,去河邊找鬼指蚁。 笑死菩佑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的欣舵。 我是一名探鬼主播擎鸠,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缘圈!你這毒婦竟也來(lái)了劣光?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤糟把,失蹤者是張志新(化名)和其女友劉穎绢涡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體遣疯,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雄可,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片数苫。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聪舒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出虐急,到底是詐尸還是另有隱情箱残,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布止吁,位于F島的核電站被辑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敬惦。R本人自食惡果不足惜盼理,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俄删。 院中可真熱鬧宏怔,春花似錦、人聲如沸抗蠢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迅矛。三九已至妨猩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秽褒,已是汗流浹背壶硅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留销斟,地道東北人庐椒。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蚂踊,于是被迫代替她去往敵國(guó)和親约谈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容