回顾一下,我们在前面学习了脚本文件中不同的回调函数对应的功能。如何访问自身和其它节点与组件,以及常用的节点组件的接口功能。接下来开始第四篇的学习。
1、创建新节点——new cc.Node()
start : function ( ) {
var node = new cc.Node('Sprite'); //new cc.Node() 方法创建了定义为node的新节点
var sp = node.addComponent(cc.Sprite); //为新节点node加入Sprite组件命名为sp
sp.spriteFrame = this.sprite; //初始化sp组件
node.parent = this.node; //为新节点设置父节点
},
2、克隆已有节点——cc.instantiate
start : function (){
var scene = cc.director.getScene(); //得到一个场景变量,cc.director提供的API
var node = cc.instantiate(this.target); //克隆一个和this.target节点相同的节点
node.parent = scene; //设置新节点的父节点
node.setPosition(0,0); //设置新节点的位置
},
3、创建预制节点和克隆节点的方法完全相同——cc.instantiate
只是this.target指向的目标类型不同——一个是cc.Node ; 另外一个是 cc.Prefab。
4、销毁节点——node.destory()
start : function () {
setTimeout(function(){ //设置了一个setTimeout函数,用来延时。第一个参数是执行功能,第二个参数是时间,5000毫秒
this.target.destory();
}.bind(this),5000); //这里对this.target进行销毁,之后这个bind(this)百度一下是绑定this指针的朝向;因为我们之后还会对这个对象检测是否销毁成功,所以这里绑定了一下。
},
update : function(dt){
if(cc.isValid(this.target)){ //cc.isValid()判断指向节点是否被销毁。
this.target.rotation += dt * 10.0; //未被销毁则节点每帧转10度(+= dt * 10.0)
}
},
4、我们的游戏不可能只有一个场景,所以接下来学习加载和切换场景。
加载场景:
cc.director.loadScene("MyScene"); //cc.director.loadScene 参数为场景名""记得双引号,不含后缀
常驻节点:场景的切换会摧毁所有节点和实例——常驻节点可以在转场操作中保持不变
cc.game.addPersistRootNode(myNode); //设置节点为常驻
cc.game.removePersistRootNode(myNode); //取消节点常驻属性
场景加载回调:
cc.director.loadScene("MyScene", onSceneLaunched);
//这里给loadScene添加了第二个参数,这个参数就是声明在本脚本中的一个回调函数,专门用来在加载场景后完成组发的初始化和数据传递操作。——为了保证回调函数不会被摧毁,所以通常会绑定到常驻节点上。
预加载场景
我们可以提前在后台静默加载新场景,并手动按钮切换以保持流畅性。
cc.director.preloadScene("table",f