[cocos2d]cocos creator的常规用法
来源:互联网 发布:mac如何画泳道图 编辑:程序博客网 时间:2024/05/22 01:43
cocos creator的常规用法
cc 属性介绍
获取组件的几种形式
全局变量的访问
模块之间的访问
在当前节点下添加一个组件
复制节点/或者复制 prefab
销毁节点(销毁节点并不会立刻发生,而是在当前 帧逻辑更新结束后,统一执行)
事件监听 on 4种形式(包括坐标获取)
关闭监听
发射事件(事件手动触发)
动作示例,类似c2dx api 基本无变化
计时器 (component)schedule (cc.Node 不包含计时器相关 API)
url raw资源获取
获取组件的几种形式
全局变量的访问
模块之间的访问
在当前节点下添加一个组件
复制节点/或者复制 prefab
销毁节点(销毁节点并不会立刻发生,而是在当前 帧逻辑更新结束后,统一执行)
事件监听 on 4种形式(包括坐标获取)
关闭监听
发射事件(事件手动触发)
动作示例,类似c2dx api 基本无变化
计时器 (component)schedule (cc.Node 不包含计时器相关 API)
url raw资源获取
下面代码:
cc.Class({extends: cc.Component,
properties: {label: {default: null,type: cc.Label},text: 'Hello, World!',t_prefab:{default:null,type:cc.Prefab},t_sprite:{//定义一个cc的类型,并定义上常用属性default:null,type:cc.SpriteFrame,//类型的定义// url:cc.Texture2D, //Raw Asset(cc.Texture2D, cc.Font, cc.AudioClip)visible:true,//属性检查器中是否可见displayName:'himi',//属性检查器中属性的名字tooltip:"测试脚本",//属性检查器中停留此属性名称显示的提示文字readonly:false,//属性检查器中显示(readonly)且不可修改[当前有bug,设定只读也能修改]serializable:true,//设置false就是临时变量editorOnly:false//导出项目前剔除此属性},t_url:{default:null,url:cc.Texture2D},t_count_2:200,//基础类型//可以只定义 get 方法,这样相当于一份 readonly 的属性。[当前有bug,只设定get也能修改]t_getSet:{default:12,get:function(){returnthis.t_getSet},//getset:function(value){this.t_getSet =value;}//set},t_array:{//定义一个数组default:[],type:[cc.Sprite]}},
// use this for initializationonLoad: function () {//--->>> 获取组件的集中形式://1. 通过属性检查器被赋值的label组件,直接拿到得到实例//2. 通过属性检查器被赋值的label组件所在的node节点,然后通过getComponent获取// this.label.string = this.text;//3. 获取当前this(node)节点上的label组件// var _label = this.getComponent(cc.Label);//4. 先获取目标组件所在的节点,然后通过getComponent获取目标组件var _label =cc.find("Canvas/label").getComponent(cc.Label);//5.也可以如下形式【注意此种方式,目前有BUG,无法正常使用 (0.7.1) 】// var _label = cc.find("Canvas/label<cc.Label>");console.log(_label.string);console.log(this.t_getSet);//--->>>全局变量的访问/* 任意脚本中定义如下:【注意不要有var哦】t_global = {tw:100,th:200};*/t_global.th =2000;console.log(t_global.th);//--->>>模块之间的访问/*任意脚本中定义如下 【注意关键字是module.exports】module.exports= {tme_pa1:"100",tme_pa2:333221};*///--->>>用 require + 文件名(不含路径) 来获取到其他 模块 的对象var tModuleData =require("test");tModuleData.tme_pa2 =991;console.log(tModuleData.tme_pa2);//--->>>在当前节点下添加一个组件var mySprite =newcc.Node().addComponent(cc.Sprite);mySprite.spriteFrame =this.t_sprite;mySprite.node.parent =this.node;mySprite.node.setPosition(300,200);//--->>>复制节点/或者复制 prefab//复制节点var lLabel =cc.instantiate(this.label);lLabel.node.parent =this.node;lLabel.node.setPosition(-200,0);//复制prefabvar tPrefab =cc.instantiate(this.t_prefab);tPrefab.parent =this.node;tPrefab.setPosition(-210,100);//--->>> 销毁节点(销毁节点并不会立刻发生,而是在当前 帧逻辑更新结束后,统一执行)if (cc.isValid(this.label.node) ) {console.log("有效存在,进行摧毁");this.label.destroy();}else{console.log("已摧毁");}//--->>> 事件监听 on 4种形式//枚举类型注册var tFun =function (event){console.log("touchend event:"+event.touch.getLocation().x +"|"+event.touch.getLocation().y);};this.node.on(cc.Node.EventType.TOUCH_END,tFun,this);//事件名注册// var tFun =function (event){// console.log("touchend event"); // };// this.node.on("touchend",tFun);// this.node.on("touchend",function (event){// console.log("touchend event"); // });// this.node.on("touchend",function (event){// console.log("touchend event"); // },this);// this.node.on("touchend",function (event){// console.log("touchend event"); // }.bind(this));//--->>> 一次性的事件监听 once// this.node.once("touchend",function (event){// console.log("touchend event"); // });//--->>> 关闭监听this.node.off("touchend",tFun,this);//--->>> 发射事件(事件手动触发)this.node.on("tEmitFun",function (event){console.log("tEmitFun event:"+event.detail.himi+"|"+event.detail.say);//-->>> 事件中断,如下函数阻止事件向当前父级进行事件传递// event.stopPropagation();});this.node.emit("tEmitFun",{himi:27,say:"hello,cc!"});//--->>> 动作,类似c2dx api 基本无变化var mTo =cc.moveBy(1,-100, -200);var mAction =cc.repeatForever(cc.sequence(cc.moveBy(1,-100, -200),mTo.reverse(),cc.delayTime(0.5),cc.callFunc(function(action,data){console.log("action callback:"+data.himi);},this,{tx:100,himi:"i'm action callback and bring data"})));mySprite.node.runAction(mAction);//暂停动作mySprite.node.stopAction(mAction);//--->>> 计时器 (component)schedule (cc.Node 不包含计时器相关 API)//参数: call funtion/interval/repeat times/delay time//不延迟,永久重复this.schedule(function(){console.log("schedule log...");},1);//不延迟,有重复次数限定// this.schedule(function(){// console.log("schedule log...");// },1,2);//重复2次,重复间隔为1秒,延迟1秒进行// this.schedule(function(){// console.log("schedule log...");// },1,2,1);//一次性的计时器var mySch =function(){console.log("schedule Once log..."); }this.scheduleOnce(mySch);//取消定时器this.unschedule(mySch);//--->>> url raw资源获取var mSf =newcc.Node().addComponent(cc.Sprite);mSf.spriteFrame =this.t_sprite;mSf.spriteFrame.setTexture(this.t_url);mSf.node.setPosition(400,0);mSf.node.parent =this.node;mSf.node.setScale(0.5);//获得 Raw Asset 的 urlvar mUrl =cc.textureCache.addImage(cc.url.raw("himi.png"));console.log("raw asset url:"+mUrl);},
// called every frameupdate: function (dt) {// if (cc.isValid(this.label.node) ) {// console.log("有效存在,进行摧毁");// }else{// console.log("已摧毁");// }},});
test.js
cc.Class({
extends: cc.Component,
properties: {
label: {
default: null,
type: cc.Label
},
text: 'Hello, World!',
t_prefab:{
default:null,
type:cc.Prefab
},
t_sprite:{//定义一个cc的类型,并定义上常用属性
default:null,
type:cc.SpriteFrame,//类型的定义
// url:cc.Texture2D, //Raw Asset(cc.Texture2D, cc.Font, cc.AudioClip)
visible:true,//属性检查器中是否可见
displayName:'himi',//属性检查器中属性的名字
tooltip:"测试脚本",//属性检查器中停留此属性名称显示的提示文字
readonly:false,//属性检查器中显示(readonly)且不可修改[当前有bug,设定只读也能修改]
serializable:true,//设置false就是临时变量
editorOnly:false//导出项目前剔除此属性
},
t_url:{
default:null,
url:cc.Texture2D
},
t_count_2:200,//基础类型
//可以只定义 get 方法,这样相当于一份 readonly 的属性。[当前有bug,只设定get也能修改]
t_getSet:{
default:12,
get:function(){returnthis.t_getSet},//get
set:function(value){this.t_getSet =value;}//set
},
t_array:{//定义一个数组
default:[],
type:[cc.Sprite]
}
},
// use this for initialization
onLoad: function () {
//--->>> 获取组件的集中形式:
//1. 通过属性检查器被赋值的label组件,直接拿到得到实例
//2. 通过属性检查器被赋值的label组件所在的node节点,然后通过getComponent获取
// this.label.string = this.text;
//3. 获取当前this(node)节点上的label组件
// var _label = this.getComponent(cc.Label);
//4. 先获取目标组件所在的节点,然后通过getComponent获取目标组件
var _label =cc.find("Canvas/label").getComponent(cc.Label);
//5.也可以如下形式【注意此种方式,目前有BUG,无法正常使用 (0.7.1) 】
// var _label = cc.find("Canvas/label<cc.Label>");
console.log(_label.string);
console.log(this.t_getSet);
//--->>>全局变量的访问
/* 任意脚本中定义如下:【注意不要有var哦】
t_global = {
tw:100,
th:200
};
*/
t_global.th =2000;
console.log(t_global.th);
//--->>>模块之间的访问
/*任意脚本中定义如下 【注意关键字是module.exports】
module.exports= {
tme_pa1:"100",
tme_pa2:333221
};
*/
//--->>>用 require + 文件名(不含路径) 来获取到其他 模块 的对象
var tModuleData =require("test");
tModuleData.tme_pa2 =991;
console.log(tModuleData.tme_pa2);
//--->>>在当前节点下添加一个组件
var mySprite =newcc.Node().addComponent(cc.Sprite);
mySprite.spriteFrame =this.t_sprite;
mySprite.node.parent =this.node;
mySprite.node.setPosition(300,200);
//--->>>复制节点/或者复制 prefab
//复制节点
var lLabel =cc.instantiate(this.label);
lLabel.node.parent =this.node;
lLabel.node.setPosition(-200,0);
//复制prefab
var tPrefab =cc.instantiate(this.t_prefab);
tPrefab.parent =this.node;
tPrefab.setPosition(-210,100);
//--->>> 销毁节点(销毁节点并不会立刻发生,而是在当前 帧逻辑更新结束后,统一执行)
if (cc.isValid(this.label.node) ) {
console.log("有效存在,进行摧毁");
this.label.destroy();
}else{
console.log("已摧毁");
}
//--->>> 事件监听 on 4种形式
//枚举类型注册
var tFun =function (event){
console.log("touchend event:"+event.touch.getLocation().x +"|"+event.touch.getLocation().y);
};
this.node.on(cc.Node.EventType.TOUCH_END,tFun,this);
//事件名注册
// var tFun =function (event){
// console.log("touchend event");
// };
// this.node.on("touchend",tFun);
// this.node.on("touchend",function (event){
// console.log("touchend event");
// });
// this.node.on("touchend",function (event){
// console.log("touchend event");
// },this);
// this.node.on("touchend",function (event){
// console.log("touchend event");
// }.bind(this));
//--->>> 一次性的事件监听 once
// this.node.once("touchend",function (event){
// console.log("touchend event");
// });
//--->>> 关闭监听
this.node.off("touchend",tFun,this);
//--->>> 发射事件(事件手动触发)
this.node.on("tEmitFun",function (event){
console.log("tEmitFun event:"+event.detail.himi+"|"+event.detail.say);
//-->>> 事件中断,如下函数阻止事件向当前父级进行事件传递
// event.stopPropagation();
});
this.node.emit("tEmitFun",{himi:27,say:"hello,cc!"});
//--->>> 动作,类似c2dx api 基本无变化
var mTo =cc.moveBy(1,-100, -200);
var mAction =cc.repeatForever(cc.sequence(cc.moveBy(1,-100, -200),mTo.reverse(),cc.delayTime(0.5),cc.callFunc(function(action,data){
console.log("action callback:"+data.himi);
},this,{tx:100,himi:"i'm action callback and bring data"})));
mySprite.node.runAction(mAction);
//暂停动作
mySprite.node.stopAction(mAction);
//--->>> 计时器 (component)schedule (cc.Node 不包含计时器相关 API)
//参数: call funtion/interval/repeat times/delay time
//不延迟,永久重复
this.schedule(function(){
console.log("schedule log...");
},1);
//不延迟,有重复次数限定
// this.schedule(function(){
// console.log("schedule log...");
// },1,2);
//重复2次,重复间隔为1秒,延迟1秒进行
// this.schedule(function(){
// console.log("schedule log...");
// },1,2,1);
//一次性的计时器
var mySch =function(){console.log("schedule Once log..."); }
this.scheduleOnce(mySch);
//取消定时器
this.unschedule(mySch);
//--->>> url raw资源获取
var mSf =newcc.Node().addComponent(cc.Sprite);
mSf.spriteFrame =this.t_sprite;
mSf.spriteFrame.setTexture(this.t_url);
mSf.node.setPosition(400,0);
mSf.node.parent =this.node;
mSf.node.setScale(0.5);
//获得 Raw Asset 的 url
var mUrl =cc.textureCache.addImage(cc.url.raw("himi.png"));
console.log("raw asset url:"+mUrl);
},
// called every frame
update: function (dt) {
// if (cc.isValid(this.label.node) ) {
// console.log("有效存在,进行摧毁");
// }else{
// console.log("已摧毁");
// }
},
});
t_global = {
tw:100,
th:200
};
module.exports= {
tme_pa1:"100",
tme_pa2:333221
};
制作动态生成内容的列表
http://www.cocos.com/docs/creator/ui/list-with-data.html#
HelloWorld默认脚本
cc.Class({
extends: cc.Component,
properties: {
label: {
default: null,
type: cc.Label
},
text: 'Hello, World!'
},
// use this for initialization
onLoad: function () {
this.label.string = this.text;
},
// called every frame
update: function (dt) { },
});
extends: cc.Component,
properties: {
label: {
default: null,
type: cc.Label
},
text: 'Hello, World!'
},
// use this for initialization
onLoad: function () {
this.label.string = this.text;
},
// called every frame
update: function (dt) { },
});
按钮常用事件
cc.Node.EventType.TOUCH_START //按下时事件
cc.Node.EventType.TOUCH_MOVE //按住移动后事件
cc.Node.EventType.TOUCH_END //按下后松开事件
cc.Node.EventType.TOUCH_CANCEL //按下后取消事件
范例:
//当按下按钮后松开后,跳转到指定场景
cc.Class({
extends: cc.Component,
properties: {
ToScene: '00'
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_END,function(event){
cc.director.loadScene(this.ToScene);
},this);
},
});
cc.Node.EventType.TOUCH_MOVE //按住移动后事件
cc.Node.EventType.TOUCH_END //按下后松开事件
cc.Node.EventType.TOUCH_CANCEL //按下后取消事件
范例:
//当按下按钮后松开后,跳转到指定场景
cc.Class({
extends: cc.Component,
properties: {
ToScene: '00'
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_END,function(event){
cc.director.loadScene(this.ToScene);
},this);
},
});
按钮点击后播放背景音乐
cc.Class({
extends: cc.Component,
properties:{
BGAudio:{
default:null,
url:cc.AudioClip
},
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_END,function(event){
cc.audioEngine.playMusic(this.BGAudio,true);
},this);
},
});
extends: cc.Component,
properties:{
BGAudio:{
default:null,
url:cc.AudioClip
},
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_END,function(event){
cc.audioEngine.playMusic(this.BGAudio,true);
},this);
},
});
按钮点击后跳转场景
新建如下脚本
cc.Class({
extends: cc.Component,
properties: {
ToScene: '00'
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_END,function(event){
cc.director.loadScene(this.ToScene);
},this);
},
});
二、挂载脚本到对象组件上
三、在组件上修改“ToScene”的值(跳转的场景名)
cc.Class({
extends: cc.Component,
properties: {
ToScene: '00'
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_END,function(event){
cc.director.loadScene(this.ToScene);
},this);
},
});
二、挂载脚本到对象组件上
三、在组件上修改“ToScene”的值(跳转的场景名)
按钮点击时的点击声音
一、新建如下脚本
cc.Class({
extends: cc.Component,
properties:{
ClickAudio:{
default:null,
url:cc.AudioClip
},
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_START,function(event){
cc.audioEngine.playEffect(this.ClickAudio,false);
},this);
},
});
二、挂载脚本到对象组件上
三、在组件上修改“ClickAudio:”的值(音频资源)
cc.Class({
extends: cc.Component,
properties:{
ClickAudio:{
default:null,
url:cc.AudioClip
},
},
onLoad: function () {
this.node.on(cc.Node.EventType.TOUCH_START,function(event){
cc.audioEngine.playEffect(this.ClickAudio,false);
},this);
},
});
二、挂载脚本到对象组件上
三、在组件上修改“ClickAudio:”的值(音频资源)
api常用功能
cc.log(变量);//输出日志(若输出固定文本,需要加上“”)
cc.director.loadScene('场景名称');//场景跳转
this.node.setPosition(x,y);//设置节点位置
this.node.runAction(cc.moveTo(1,cc.p(0,0)));//移动当前节点(移动指定距离用moveBy)
this.node.runAction(cc.scaleTo(1,0.7,0.8));/缩放当前节点
this.node.runAction(cc.rotateTo(1,160,160));//旋转当前节点(旋转指定角度用rotateBy)
this.node.setOpacity(20);//设置节点透明度
hero1_X = hero1.node.getPositionX();//获取节点的X轴位置
this.node.color = new cc.color(100,100,100,255);//设置节点颜色
var a = cc.find("Canvas/1").getComponent(cc.Sprite);//获取组件
node.on(cc.Node.EventType.TOUCH_START, callback, this.node);//添加该节点的事件监听
node.off(cc.Node.EventType.TOUCH_START, callback, this.node);//删除该节点的事件监听
if (cc.isValid(this.label.node) )//判定节点是否存在
this.node.destroy();//销毁节点
//计算1次的计时器,2秒后执行
this.scheduleOnce(function(){
this.doSomething();
},2);
//每隔5秒执行1次
this.schedule(function(){
this.doSomething();
},5);
//计算多次的计时器(1秒后,以0.1秒的执行间隔,执行10次)
this.schedule(function(){
this.doSomething();
},0.1,10,1);
this.unscheduleAllCallbacks(this);//停止某组件的所有计时器
cc.sys.localStorage.setItem('G01.level',G01.level);//存储存档数据
cc.sys.localStorage.getItem('G01.level');//读取存档数据
cc.sys.localStorage.removeItem('G01.level');//擦除存档数据
cc.find('canvas/map' + num)//读取带变量的路径
//定义数组
var a= ['java','c++','c#'];
var a={}
var a=new Array(40);
hero1.node.getLocalZOrder();//层级获取
hero1.node.setLocalZOrder(1);//层级改变
//获得设备分辨率
var b = cc.director.getWinSizeInPixels()
var bx = b.width
var by = b.height
node.active = false;//激活节点
包含其他脚本
const Polyglot = require('polyglot');
Polyglot.a = 1;
//定义全局变量
window.G = {
a: null,
b: null,
};
//访问全局变量
G.a = 0;
G.b = 0;
Math.round(num)//四舍五入
Math.floor(num)//小于等级num的整数
Math.ceil(num)//大于等级num的整数
//获得节点
var node = this.node;
node.x = 100;
//获得所有节点
this.cannons = [];
this.cannons = this.node.getChildren();
获取组件的3种形式:
1、通过属性检查器被赋值的label组件所在的node节点,然后通过getComponent获取
this.label.string = this.text;
2、获取当前this(node)节点上的label组件
var label = this.getComponent(cc.Label);
3、先获取目标组件所在的节点,然后通过getComponent获取目标组件
var a = cc.find("Canvas/1").getComponent(cc.Sprite);
在当前节点下添加一个组件
var mySprite = new cc.Node().addComponent(cc.Sprite);
mySprite.spriteFrame = this.t_sprite;
mySprite.node.parent = this.node;
mySprite.node.setPosition(300,200);
复制节点
var lLabel = cc.instantiate(this.label);
lLabel.node.parent = this.node;
lLabel.node.setPosition(-200,0);
复制prefab
var tPrefab = cc.instantiate(this.t_prefab);
tPrefab.parent = this.node;
tPrefab.setPosition(-210,100);
实例预制体
t_prefab:{
default:null,
type:cc.Prefab
},
var tPrefab = cc.instantiate(this.t_prefab);
tPrefab.parent = this.node;
tPrefab.setPosition(-210,100);
cc.director.loadScene('场景名称');//场景跳转
this.node.setPosition(x,y);//设置节点位置
this.node.runAction(cc.moveTo(1,cc.p(0,0)));//移动当前节点(移动指定距离用moveBy)
this.node.runAction(cc.scaleTo(1,0.7,0.8));/缩放当前节点
this.node.runAction(cc.rotateTo(1,160,160));//旋转当前节点(旋转指定角度用rotateBy)
this.node.setOpacity(20);//设置节点透明度
hero1_X = hero1.node.getPositionX();//获取节点的X轴位置
this.node.color = new cc.color(100,100,100,255);//设置节点颜色
var a = cc.find("Canvas/1").getComponent(cc.Sprite);//获取组件
node.on(cc.Node.EventType.TOUCH_START, callback, this.node);//添加该节点的事件监听
node.off(cc.Node.EventType.TOUCH_START, callback, this.node);//删除该节点的事件监听
if (cc.isValid(this.label.node) )//判定节点是否存在
this.node.destroy();//销毁节点
//计算1次的计时器,2秒后执行
this.scheduleOnce(function(){
this.doSomething();
},2);
//每隔5秒执行1次
this.schedule(function(){
this.doSomething();
},5);
//计算多次的计时器(1秒后,以0.1秒的执行间隔,执行10次)
this.schedule(function(){
this.doSomething();
},0.1,10,1);
this.unscheduleAllCallbacks(this);//停止某组件的所有计时器
cc.sys.localStorage.setItem('G01.level',G01.level);//存储存档数据
cc.sys.localStorage.getItem('G01.level');//读取存档数据
cc.sys.localStorage.removeItem('G01.level');//擦除存档数据
cc.find('canvas/map' + num)//读取带变量的路径
//定义数组
var a= ['java','c++','c#'];
var a={}
var a=new Array(40);
hero1.node.getLocalZOrder();//层级获取
hero1.node.setLocalZOrder(1);//层级改变
//获得设备分辨率
var b = cc.director.getWinSizeInPixels()
var bx = b.width
var by = b.height
node.active = false;//激活节点
包含其他脚本
const Polyglot = require('polyglot');
Polyglot.a = 1;
//定义全局变量
window.G = {
a: null,
b: null,
};
//访问全局变量
G.a = 0;
G.b = 0;
Math.round(num)//四舍五入
Math.floor(num)//小于等级num的整数
Math.ceil(num)//大于等级num的整数
//获得节点
var node = this.node;
node.x = 100;
//获得所有节点
this.cannons = [];
this.cannons = this.node.getChildren();
获取组件的3种形式:
1、通过属性检查器被赋值的label组件所在的node节点,然后通过getComponent获取
this.label.string = this.text;
2、获取当前this(node)节点上的label组件
var label = this.getComponent(cc.Label);
3、先获取目标组件所在的节点,然后通过getComponent获取目标组件
var a = cc.find("Canvas/1").getComponent(cc.Sprite);
在当前节点下添加一个组件
var mySprite = new cc.Node().addComponent(cc.Sprite);
mySprite.spriteFrame = this.t_sprite;
mySprite.node.parent = this.node;
mySprite.node.setPosition(300,200);
复制节点
var lLabel = cc.instantiate(this.label);
lLabel.node.parent = this.node;
lLabel.node.setPosition(-200,0);
复制prefab
var tPrefab = cc.instantiate(this.t_prefab);
tPrefab.parent = this.node;
tPrefab.setPosition(-210,100);
实例预制体
t_prefab:{
default:null,
type:cc.Prefab
},
var tPrefab = cc.instantiate(this.t_prefab);
tPrefab.parent = this.node;
tPrefab.setPosition(-210,100);
触摸事件
cc.Node.EventType.TOUCH_START //当手指触点落在目标节点区域内时
cc.Node.EventType.TOUCH_MOVE //当手指在屏幕上目标节点区域内移动时
cc.Node.EventType.TOUCH_END //当手指在目标节点区域内离开屏幕时
cc.Node.EventType.TOUCH_CANCEL //当手指在目标节点区域外离开屏幕时
API名 类型 意义
touch cc.Touch 与当前事件关联的触点对象
getID Number 获取触点的ID,用于多点触摸的逻辑判断
getLocation Object 获取触点位置对象,对象包含x和y属性
getLocationX Number 获取触点的X轴位置
getLocationY Number 获取触点的Y轴位置
getPreviousLocation Object 获取触点上一次触发事件时的位置对象,对象包含x和y属性
getStarLocation Object 获取触点初始时的位置对象,对象包含x和y属性
getDelta Object 获取触点距离上一次事件移动的距离对象,对象包含x和y属性
范例:
this.node.on(cc.Node.EventType.TOUCH_MOVE,function(event){
var a = event.getLocationX();
var b = event.getLocationY();
var hero1 = cc.find("Canvas/Game/hero1").getComponent(cc.Sprite);
hero1.node.setPosition(a-180,b-320);
},this);
cc.Node.EventType.TOUCH_MOVE //当手指在屏幕上目标节点区域内移动时
cc.Node.EventType.TOUCH_END //当手指在目标节点区域内离开屏幕时
cc.Node.EventType.TOUCH_CANCEL //当手指在目标节点区域外离开屏幕时
API名 类型 意义
touch cc.Touch 与当前事件关联的触点对象
getID Number 获取触点的ID,用于多点触摸的逻辑判断
getLocation Object 获取触点位置对象,对象包含x和y属性
getLocationX Number 获取触点的X轴位置
getLocationY Number 获取触点的Y轴位置
getPreviousLocation Object 获取触点上一次触发事件时的位置对象,对象包含x和y属性
getStarLocation Object 获取触点初始时的位置对象,对象包含x和y属性
getDelta Object 获取触点距离上一次事件移动的距离对象,对象包含x和y属性
范例:
this.node.on(cc.Node.EventType.TOUCH_MOVE,function(event){
var a = event.getLocationX();
var b = event.getLocationY();
var hero1 = cc.find("Canvas/Game/hero1").getComponent(cc.Sprite);
hero1.node.setPosition(a-180,b-320);
},this);
创建和销毁节点
创建新节点
var node = new cc.Node(sprite);
var sp = node.addComponent(cc.Sprite);
sp.spriteFrame = this.sprite;
node.parent = this.node;
node.setPosition(0,0);
克隆节点
var scene = cc.director.getScene();
var node = cc.instantiate(this.target);
node.parent = this.node;
node.setPosition(0,0);
var node = new cc.Node(sprite);
var sp = node.addComponent(cc.Sprite);
sp.spriteFrame = this.sprite;
node.parent = this.node;
node.setPosition(0,0);
克隆节点
var scene = cc.director.getScene();
var node = cc.instantiate(this.target);
node.parent = this.node;
node.setPosition(0,0);
生命周期回调
onLoad
场景载入时触发
start
第一次执行update前触发
update
每一帧触发
场景载入时触发
start
第一次执行update前触发
update
每一帧触发
声明基本格式
音频:
名称:{
default:null,
url:cc.AudioClip
},
图片:
名称:{
default:null,
type:cc.SpriteFrame
},
文本:
名称: {
default: null,
type: cc.Label
},
节点:
名称: {
default: null,
type: cc.Node
},
名称:{
default:null,
url:cc.AudioClip
},
图片:
名称:{
default:null,
type:cc.SpriteFrame
},
文本:
名称: {
default: null,
type: cc.Label
},
节点:
名称: {
default: null,
type: cc.Node
},
声音的播放
播放背景音乐
cc.audioEngine.playMusic("assets/Sound/00/bg.mp3",true)
停止背景音乐
cc.audioEngine.stopMusic()
播放音效
var effect = cc.audioEngine.playEffect(声音对象,false);
停止音效
cc.audioEngine.stopEffect(音效变量名)
停止所有音效
cc.audioEngine.AllEffects()
单独设置背景音乐的音量
cc.audioEngine.setMusicVolume(参数); //该参数范围是0到1
单独设置音效的音量
cc.audioEngine.setEffectsVolume(参数); //该参数范围是0到1
范例:
properties:{
jumpAudio:{
default:null,
url:cc.AudioClip
},
},
然后在使用的节点上添加jumpAudio的声音资源
cc.audioEngine.playEffect(this.jumpAudio,false);
cc.audioEngine.playMusic("assets/Sound/00/bg.mp3",true)
停止背景音乐
cc.audioEngine.stopMusic()
播放音效
var effect = cc.audioEngine.playEffect(声音对象,false);
停止音效
cc.audioEngine.stopEffect(音效变量名)
停止所有音效
cc.audioEngine.AllEffects()
单独设置背景音乐的音量
cc.audioEngine.setMusicVolume(参数); //该参数范围是0到1
单独设置音效的音量
cc.audioEngine.setEffectsVolume(参数); //该参数范围是0到1
范例:
properties:{
jumpAudio:{
default:null,
url:cc.AudioClip
},
},
然后在使用的节点上添加jumpAudio的声音资源
cc.audioEngine.playEffect(this.jumpAudio,false);
图片不抗锯齿
在onLoad或update函数里添加:
this.node.getComponents(cc.Sprite)[0].spriteFrame.getTexture().setAliasTexParameters()
把JS文件挂到需要不抗锯齿的带图片的控件下面
setAliasTexParameters()//不抗锯齿
setAntiAliasTexParameters()//抗锯齿
this.node.getComponents(cc.Sprite)[0].spriteFrame.getTexture().setAliasTexParameters()
把JS文件挂到需要不抗锯齿的带图片的控件下面
setAliasTexParameters()//不抗锯齿
setAntiAliasTexParameters()//抗锯齿
阅读全文
0 0
- [cocos2d]cocos creator的常规用法
- cocos creator shader用法
- cocos creator editbox控件用法
- cocos creator Button控件用法
- Cocos Creator的数据管理
- 【cocos creator】cocos creator的官网demo小游戏--小星星
- Cocos Creator 的属性创建
- cocos creator的事件处理.
- cocos creator的自定义事件
- cocos creator的研究结果
- cocos creator 特效的处理
- Cocos Creator的moveTo函数
- 接触 cocos creator 的感受
- cocos creator
- cocos Creator
- Cocos Creator如何导入Cocos2d-x工程 【Mac】
- cocos creator的下载与安装
- cocos creator 节点和组件的访问
- Apache2配置免费型DV SSL实现多域名多站点Https访问
- Nginx 负载均衡配置
- Spark基础-Scala集合的操作
- 利用区块链技术解决传统物流贸易金融诸多痛点
- HDU 6126 Give out candies 最小割
- [cocos2d]cocos creator的常规用法
- Android解析JSON数据
- Leetcode 269. Alien Dictionary
- 赌博的乐趣-1
- da
- celery+django+redis异步处理邮件发送
- Java性能工具分析学习笔记
- CoreJava day 03
- 如何使用Fiddler调试线上JS代码(转自:http://www.cnblogs.com/RockLi/p/3511132.html)