cocos js 代码阅读笔记_170510(一)

35 篇文章 0 订阅
28 篇文章 0 订阅
window 全局对象

公共方法来将cocos studio的文件节点家在到场景中,this就是场景Scene中去
addCachedCCSChildrenTo(res.MaScene1_json, this);
//自己实现了一个 栈处理 ccs上的节点一个个家在到场景中,通过windiw全局对象来操作
var addCachedCCSChildrenTo = function (res, distNode) {
    window.ccsCache = window.ccsCache || {};
    var isRelease = !!window.ccsCache[res];
    window.ccsCache[res] = window.ccsCache[res] || ccs.load(res).node;
    var parent = window.ccsCache[res];
    var arr = [];
    for (var i = 0; i < parent.children.length; i++)
        arr.push(parent.children[i]);
    for (var i = 0; i < arr.length; i++) {
        arr[i].retain();
        arr[i].removeFromParent(false);
    }
    for (var i = 0; i < arr.length; i++) {
        distNode.getChildByName("Scene").addChild(arr[i]);
        arr[i].release();
    }
    if (isRelease)
        window.ccsCache[res].release();
    delete window.ccsCache[res];
};
loadCCSTo这个是加载的主场景Scene的ccs文件,加载到,当场景中的ccs文件加载完成后就
会调用 
onCCSLoadFinish
这个函数来处理界面加载完成后的逻辑
	distNode是scene场景
var loadCCSTo = function (res, distNode, rootName, moreArr, playaction) {
    moreArr = moreArr || [];
    var mainscene = null;
    if (window.ccsCache && window.ccsCache[res]) {
        mainscene = window.ccsCache[res];
        window.ccsCache[res] = null;
        distNode.addChild(mainscene.node);
        mainscene.node.release();
    }
    else {
        mainscene = ccs.load(res);		//加载ccs文件到场景中
        distNode.addChild(mainscene.node);
    }

    var interval = null;			//1毫秒检查一次ccs资源加载,如果加载成功了就往下执行onCCSLoadFinish里面的逻辑,
						//如果没有执行就一直加载隔1毫秒检查一次
    var checkFunc = function () {
        if (!checkAllNodesValid(distNode.getChildByName(rootName)))
            return;
        var rootNode = distNode.getChildByName(rootName);
        for (var i = 0; i < moreArr.length; i++) {
            var node = rootNode.getChildByName(moreArr[i]);
            if (!node || !cc.sys.isObjectValid(node))
                return;
        }
        	(interval);
        interval = null;

        var ret = true;
        if (distNode.getBeforeOnCCSLoadFinish && distNode.getBeforeOnCCSLoadFinish())
            ret = distNode.getBeforeOnCCSLoadFinish()();
        if (ret && distNode.onCCSLoadFinish)
            distNode.onCCSLoadFinish.call(distNode);	//ccs文件的字节点加载完成后调用onCCSLoadFinish函数,call(),绑定disNode节点
    };
    interval = setInterval(checkFunc, 1);		//
setInterval

checkFunc();
	if (playaction) {        
		mainscene.node.runAction(mainscene.action);        
		mainscene.action.play('action', true);    
	}};

null === undefined
false
null == undefined
true
batchSetChildrenZorder 设置孩子的loczorder


getRootNode: function () {
    return this.getChildByName("Scene");
},
$ = create$(this.getRootNode());

var create$ = function (sceneNode) {
    var func = function (query, rootNode) { 		//JQuery 语句,查找rootNode节点
        var arr = query.split(/\./g); 			//正则表达式,删除. 然后返回string。
        var t = rootNode || sceneNode;
        for (var i = 0; i < arr.length; i++)
            if (t) {
                if (!cc.sys.isObjectValid(t)) {
                    cc.log("-- not a valid object " + query);
                    return null;
                }
                t = t.getChildByName(arr[i]);
            }
            else {
                return null;
            }
        return t;
    };
    var retFunc = null;
    if (_.isArray(sceneNode)) {
        retFunc = function (query, rootNode) {
            if (rootNode)
                return func(query, rootNode);
            else {
                for (var i = 0; i < sceneNode.length; i++) {
                    var ret = func(query, sceneNode[i]);
                    if (ret)
                        return ret;
                }
                return null;
            }
        };
    }
    else
        retFunc = func;
    return retFunc;
};
 

 replace(/\//g, '') 的作用是把/替换成''。

用法如下:比如:var aa= "adsdd/sdsd12/";bb=aa.replace(/\//g, '') ;那么bb=adsddsdsd12

一般来说
$是为了简短输入 在Prototype $('#id')是等于document.getElementById('id'),即DOM对象。
但在jQuery中$('#id')获取的却是jQuery对象,而不是DOM对象。
所以,在Prototype中可以直接使用$('#id').JS内置方法()
但jQuery只能$('#id').jQuery方法()
jQuery有个比较好的实现是,使用jQuery方法后返回的仍然是jQuery对象,所以我们可以一直写下去,如$('#id').css(...).hide().show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值