cocos creator小技巧

首先creator api http://docs.cocos.com/creator/api/zh/
常用 UI 控件
http://docs.cocos.com/creator/manual/zh/ui/ui-components.html#

  1. 保存读取数据 cc.sys.localStorage
// 保存数据
cc.sys.localStorage.setItem(key, value);
// 读取数据
cc.sys.localStorage.getItem(key);
  1. 全局变量
    window.Global = {
    };
    模块访问
    module.exports = {
    node:null,
    bg:null
    };

  2. 获取本地坐标
    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));
  1. 常见问题:http://blog.csdn.net/qq_28653047/article/details/51880912

  2. 手动创建一个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;
    },
  1. 隐藏控件
this.bgimg.node.active = false;
this.syimg.enabled = false   // 隐藏单个组件
  1. 动态改图片文理
    首先把图片集放在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;
        });

可看官方api http://docs.cocos.com/creator/manual/zh/scripting/load-assets.html?h=spriteframe

  1. 动画
              // 贝塞尔曲线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);
  1. Prefab的使用
tmpPrefab:{
            default: null,
            type:cc.Prefab,
        },

或者自己手动创建

cc.loader.loadRes("aa/tmpSprite", function (err, prefab){
    let prebNode = cc.instantiate(prefab);
    self.node.addChild(prebNode);
});
  1. 移除节点 node.destroy
    删除本身this.node.destroy(); 而不是this.destroy();

  2. 延迟时间

// 3秒后
        setTimeout(function () {
            // do something
        }.bind(this), 3000);
  1. 父节点获取prefab实例的js内容
pnode.getComponent('testScript').iscore = 100;
  1. 访问节点和组件

  2. cc.instantiate
    克隆指定的任意类型的对象,或者从 Prefab 实例化出新节点。

var scene = cc.director.getScene();
var node = cc.instantiate(targetNode);
node.parent = scene;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容