cocos creator 常用小技巧
这些都是我在网上看到的各位大神总结下来的东西,我记录一下以便在学习中使用,大家有需要的也可以拿去看,感谢各位大佬们的贡献,万分感谢!
1、保存读取数据 cc.sys.localStorage
// 保存数据
cc.sys.localStorage.setItem(key, value);
// 读取数据
cc.sys.localStorage.getItem(key);
2、全局变量
window.Global = {
};
模块访问
module.exports = {
node:null,
bg:null
};
3、获取本地坐标
var bpoint = this.bnode.position;
//获取sprite的全局坐标
let point = spriteParent.convertToWorldSpaceAR(sprite.getPosition());
//spriteParent为sprite的父节点
this.bNode.on(cc.Node.EventType.TOUCH_START, function (event) {
//获取当前点击的坐标
var temp = event.getLocation();
console.log('Mouse down');
}, this);
//使用 setPosition 方法:
this.node.setPosition(100, 50);
this.node.setPosition(cc.v2(100, 50));
4、常见问题:http://blog.csdn.net/qq_28653047/article/details/51880912
5、手动创建一个Sprite
createSprite(name, imgurl){
var dynamicNode = new cc.Node(name);
var sp = dynamicNode.addComponent(cc.Sprite);
var imgUrl = cc.url.raw(imgurl);
var texture = cc.textureCache.addImage(imgUrl);
sp.spriteFrame = new cc.SpriteFrame();
sp.spriteFrame.setTexture(texture);
return dynamicNode;
},
6、隐藏控件
this.bgimg.node.active = false;
this.syimg.enabled = false // 隐藏单个组件
7、动态改图片文理
首先把图片集放在resources目录下面
let self = this;
cc.loader.loadRes("cross/cross", cc.SpriteAtlas, function (err, atlas) {
if (err) {
cc.error(err.message || err);
return;
}
// 动态改变图片
var frame = atlas.getSpriteFrame("test1");
spnode.getComponent(cc.Sprite).spriteFrame = frame;
});
8、动画
// 贝塞尔曲线3点
var bezier = [cc.p(0,0), cc.p(50,100), cc.p(100,0)];
var bezierBy = cc.bezierBy(0.8, bezier);
var fc = cc.callFunc(function(){
sp.destroy();
},this);
var seq = cc.sequence(bezierBy, fc);
sp.runAction(seq);
9、Prefab的使用
tmpPrefab:{
default: null,
type:cc.Prefab,
},
或者自己手动创建
cc.loader.loadRes("aa/tmpSprite", function (err, prefab){
let prebNode = cc.instantiate(prefab);
self.node.addChild(prebNode);
});
10、移除节点 node.destroy
删除本身this.node.destroy(); 而不是this.destroy();
11、延迟时间
// 3秒后
setTimeout(function () {
// do something
}.bind(this), 3000);
12、父节点获取prefab实例的js内容
pnode.getComponent('testScript').iscore = 100;
13、cc.instantiate
克隆指定的任意类型的对象,或者从 Prefab 实例化出新节点。
var scene = cc.director.getScene();
var node = cc.instantiate(targetNode);
node.parent = scene;
14、一些常用接口
//删除所有子节点
node.removeAllChildren(...);
//查找结点
cc.find("ConstantNode").getComponent("Network");
//获取子节点
node.getChildByName(...);
//获取组件
node.getComponent(cc.Label)
//初始化预制件
cc.instantiate(...);
//随机数
Math.random();
//过多长时间执行一次
this.scheduleOnce(function(){
...
},5);
//动态加载远程图片
loadImg: function(container,url){
cc.loader.load(url, function (err, texture) {
var sprite = new cc.SpriteFrame(texture);
container.spriteFrame = sprite;
});
}
//引入常量类
var Common = require('Common');
//外部引用
module.exports = {
USER_INFO : 1,//请求用户信息(头像与昵称)
...
};
//设为常驻结点
cc.game.addPersistRootNode(this.node);
//切换场景
cc.director.loadScene("...");
//获取场景名称
cc.director.getScene().getName();
//动态添加按钮监听事件
self.wx_btn.node.on(cc.Node.EventType.TOUCH_START, function (event) {
console.log("TOUCH_START")
});
15、退出游戏(APP、网页)
cc.game.end();