廢話沒有,直接上代碼,有注釋可以看的,
cc.Class({ extends: cc.Component, properties: { //1 player:{ default:null, type:cc.Node, tooltip:"this is a tips"//屬性檢查器內的自定義提示信息 } }, onLoad:function(){ //////////使用動作系統/////////////////////////////////// //var action1=this.player.moveTo(2,100,100); cc. //this.node.runAction(action1); error //action 1 簡單移動動作 //var action1=cc.moveTo(2,100,100); //this.player.runAction(action1); // 2 順序執行的動作 //var seq0=cc.sequence(cc.moveBy(2,200,0),cc.moveBy(2,-200,0)) ; //this.player.runAction(seq0); // 3 同步動作 讓節點在向上移動的同時縮放 //var spawn = cc.spawn(cc.moveBy(0.5, 0, 50), cc.scaleTo(0.5, 0.8, 1.4)); //this.player.runAction(spawn); // 4 重復動作 cc.repeat 重復動作用來多次重復一個動作 /* var seq=cc.repeat( cc.sequence( cc.moveBy(2,200,0), cc.moveBy(2,-200,0)),5 ); this.player.runAction(seq); */ //5 永遠重復 循環 /* var seq0=cc.repeatForever(cc.sequence(cc.moveBy(2,200,0),cc.moveBy(2,-200,0))) ; this.player.runAction(seq0); */ //6 速度動作 /* var seq1=cc.speed( cc.spawn( cc.moveBy(2,200,0), cc.scaleTo(2, 0.8, 1.4) ),0.5 ); this.player.runAction(seq1); */ // 一個復雜的跳躍動畫 var JumpAction = cc.sequence( cc.spawn( cc.scaleTo(0.1, 0.8, 1.2), cc.moveTo(0.1, 0, 10) ), cc.spawn( cc.scaleTo(0.2, 1, 1), cc.moveTo(0.2, 0, 0) ), cc.delayTime(0.5), cc.spawn( cc.scaleTo(0.1, 1.2, 0.8), cc.moveTo(0.1, 0, -10) ), cc.spawn( cc.scaleTo(0.2, 1, 1), cc.moveTo(0.2, 0, 0) ) // 以1/2的速度慢放動畫,並重復5次 ).speed(2).repeat(5); this.player.runAction(JumpAction); }, start :function() { //獲取組件所在的節點,只要在組件方法里訪問 this.node 變量: var node=this.node; console.log(node.name+":0000000000000000000000000"); //獲取其他組件,獲得同一個節點上的其它組件,這就要用到 getComponent 這個 API var canvas=this.getComponent(cc.Canvas);//canvas 為object var text=canvas.name+":11111111111111111111111111"; console.log(text); //也可以為 getComponent 傳入一個類名 var label = this.getComponent("cc.Canvas"); console.log(label.name+":222222222222222222");//輸出結果同上 //對用戶定義的組件而言,類名就是腳本的文件名,且區分大小寫。 //在節點上也有一個 getComponent 方法,它們的作用是一樣的: cc.log( this.node.getComponent(cc.Label) === this.getComponent(cc.Label) ); // true /*如果在節點上找不到你要的組件,getComponent 將返回 null,如果你嘗試訪問 null 的值, 將會在運行時拋出 "TypeError" 這個錯誤。因此如果你不確定組件是否存在,記得判斷一下:*/ if(this.node.getComponent(cc.label)){ console.log("this node had label component"); } else{ console.log("this node don't have this component"); } //////////////////////////////////////////////////////////////////////// //獲得其它節點及其組件 // 最直接的方式就是在 屬性檢查器 中設置需要的對象。只需要在腳本中聲明對應屬性即可:1 //接着就可以將層級管理器上的任意一個節點拖到這個 player 控件,即可,之后可以直接在腳本里訪問 player:this.player.xxxx ///////////////////////查找子節點///////////////////////////////////////////////////////////// //游戲場景中有很多個相同類型的對象,像炮塔、敵人和特效通常都有一個全局的腳本來統一管理。此時不適合使用屬性檢查器一個個關聯到腳本。為了更好地統一管理這些對象,可以統一的父物體下,然后通過父物體來獲得所有的子物體: var cannnos=this.node.children; for(var i=0;i<cannnos.length;i++) { console.log(cannnos[i].name);//不包括自身 } //還可以使用 getChildByName:this.node.getChildByName("Cannon 01"); // console.log(this.node.getChildByName("richtext").name); //全局名字查找 當 cc.find 只傳入第一個參數時,將從場景根節點開始逐級查找: //this.backNode = cc.find("Canvas/Menu/Back",this.node); ////////////////////////訪問已有變量里的值////////////////////////////////////////////////////////////// //1,通過全局變量訪問 /*你應當很謹慎地使用全局變量,當你要用全局變量時,應該很清楚自己在做什么,我們並不推薦濫用全局變量,即使要用也最好保證全局變量只讀。 讓我們試着定義一個全局對象 window.Global,這個對象里面包含了 backNode 和 backLabel 兩個屬性。 // Globals.js, this file can have any name window.Global = { backNode: null, backLabel: null, }; 由於所有腳本都強制聲明為 "use strict",因此定義全局變量時的 window. 不可省略。 接着你可以在合適的地方直接訪問並初始化 Global: // Back.js cc.Class({ extends: cc.Component, onLoad: function () { Global.backNode = this.node; Global.backLabel = this.getComponent(cc.Label); } }); 初始化后,你就能在任何地方訪問到 Global 里的值: // AnyScript.js cc.Class({ extends: cc.Component, // start 會在 onLoad 之后執行,所以這時 Global 已經初始化過了 start: function () { var text = 'Back'; Global.backLabel.string = text; } }); 訪問全局變量時,如果變量未定義將會拋出異常。 添加全局變量時,請小心不要和系統已有的全局變量重名。 你需要小心確保全局變量使用之前都已初始化和賦值。 */ //2,通過模塊訪問 /*通過模塊訪問 如果你不想用全局變量,你可以使用 require 來實現腳本的跨文件操作,讓我們看個示例: // Global.js, now the filename matters module.exports = { backNode: null, backLabel: null, }; 每個腳本都能用 require + 文件名(不含路徑) 來獲取到對方 exports 的對象。 // Back.js // this feels more safe since you know where the object comes from var Global = require("Global"); cc.Class({ extends: cc.Component, onLoad: function () { Global.backNode = this.node; Global.backLabel = this.getComponent(cc.Label); } }); // AnyScript.js // this feels more safe since you know where the object comes from var Global = require("Global"); cc.Class({ extends: cc.Component, // start 會在 onLoad 之后執行,所以這時 Global 已經初始化過了 start: function () { var text = "Back"; Global.backLabel.string = text; } });*/ }, });