因為工作原因驱还,最近一直在用Cocos Creator做一些事情嗜暴,個人感覺,可以說Cocos Creator就是前端開發(fā)者的游戲福音议蟆。前端開發(fā)者完全可以憑借自己的前端知識+Cocos Creator訂制一款屬于自己的游戲闷沥。
剛使用Cocos Creator差不多一個多月,自己整理了一些使用常用的技巧咐容,供大家參考~舆逃。
全局變量
剛?cè)胧謈reator時就在想,如何定義和使用全局變量戳粒,定義和使用方法與JS中是否相同路狮。
在creator中可以直接不使用定義變量的var來定義全局變量,但這方法不被creator團隊所提倡蔚约,官網(wǎng)提供了一個定義方法:
// Globals.js
window.Globals = {
name : w,
age : 18
}
創(chuàng)建這樣一個Globals.js腳本薪丁,就可以在任何地方運用Globals .name 來訪問定義的name的值描融。
模塊訪問
如果不想設(shè)太多的全局變量(因為可能會造成全局污染)远荠,那么可以通過模塊來進行訪問
//在test腳本中定義如下【module.exports為關(guān)鍵字】
module.exports= {
name:“wgq”,
age:18
};
//可以在其他腳本中通過require進行訪問
var test= require("test");
test.age = 20;
console.log(test.name)//wgq
console.log(test.age)//20
這樣就可以方便的設(shè)置訪問自己想要的屬性啦!
插入插件
相信大家寫js代碼會有一個自己的插件庫评雌,那么如何在creator中引用自己的插件呢?
光創(chuàng)建一個插件腳本是不夠的直焙,必須在腳本屬性檢查器中勾選導入為插件選項景东。
這樣,不必有任何聲明奔誓,就可以在任何地方引用插件中的函數(shù)了耐薯。
獲取Creator中的Dom
在web中,使用js可以獲取dom丝里,在Creator中使用js可以獲取組件和節(jié)點。
獲取節(jié)點
1.通過拖曳
可以在一個節(jié)點的腳本中通過代碼聲明一個test屬性体谒,類型為cc.Node杯聚。
//wgq.js
properties: {
test:{
default:null,
type:cc.Node
}
},
這樣就會在腳本掛載的地方出來一個空的節(jié)點。
接著你就可以將層級管理器上的任意一個節(jié)點拖到這個 test控件抒痒,然后通過代碼this.test就可以獲取到他幌绍,進行一系列的操作。
2.通過代碼
可以通過全局查找
cc.find("Canvas/Menu/Back")
當 cc.find 只傳入第一個參數(shù)時故响,將從場景根節(jié)點開始逐級查找
可以通過子節(jié)點一層一層進行查找
var son1 = this.node.getChildByName("son1");
var son2 = son1.getChildByName("son2");
這里傀广,son1是該節(jié)點this.node下的子節(jié)點,而son2為son1下的子節(jié)點彩届,可以通過getChildByName函數(shù)進行一層一層查找伪冰。
也可以不通過名字,利用序列號進行查找
例如以下son1中有很多個son2
可以通過以下循環(huán)獲取到每一個son2:
var son2 = [];
for(var i=0;i<son1.childrenCount;i++){
var son2[i] = son1.chindren[i]
}
獲取組件
在Creator中樟蠕,一個節(jié)點可以掛載多個組件贮聂,如下:
Canvas節(jié)點中有Canvas組件,有g(shù)ama和wgq兩個腳本組件寨辩,有Label渲染組件等吓懈。
以son節(jié)點為例:
var son = this.node.getChildByName("son");
var label = son.getComponent(cc.Label);
//這樣便可獲取到son節(jié)點下的label組件,然后可以對組件進行一些操作
節(jié)點屬性
節(jié)點有一些屬性靡狞,開發(fā)中我們總是會利用js來動態(tài)改變節(jié)點的屬性
var son = this.node.getChildByName("son");
//以下代碼 son為獲取到的節(jié)點
son.active = true or false //控制節(jié)點son的顯示隱藏
son.parent = father or ... //更改son節(jié)點的父節(jié)點
son.children //返回son節(jié)點下的子節(jié)點數(shù)組
son.childrenCount //返回送節(jié)點下的子節(jié)點數(shù)量
son.x or son.y = 10//設(shè)定son節(jié)點的x耻警,y軸坐標
son.rotation = 90(度數(shù))//設(shè)定son節(jié)點的旋轉(zhuǎn)角度
son.scaleX = 2 (默認為1)//設(shè)定son節(jié)點的縮放
son.width or son.height //更改son節(jié)點的長寬
son.color //設(shè)置顏色(默認為白)
son.opacity = 200(0~255,默認為255)//設(shè)置透明度
為節(jié)點動態(tài)添加組件
有時候我們需要為節(jié)點動態(tài)添加一下組件
var myLabel = new cc.Node().addComponent(cc.Label);
myLabel.string = "test";
myLable.node.parent = son;//設(shè)置節(jié)點
myLable.node.setPosition(300,200);//設(shè)置位置