cocos随笔
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos随笔相关的知识,希望对你有一定的参考价值。
随笔:
[ 1 ] active能隐藏元素,且不占空间,但仍存在,索引时,仍能得到
[ 2 ] 碰到参数传不进去的时候可以试着用属性赋值的方法代替传参
[ 3 ] getChildByName是按照层级管理器里的节点名字进行索引的
[ 4 ] get/set方法
properties{ _shopId : 1, shopId : { set : function(value){ this._shopId = Math.floor(value) }, get : function (){ return this._shopId; } } }
可以转数据类型: 比如在set里可以this._shopId = Math.floor(value);
可以执行刷新: 比如在set里可以this.refrash();
可以对外使用: 比如在另一个脚本里可以shopId=5,这样就直接执行this._shopId = 5,因为set方法被调用;
[ 5 ] 回调
1 this._callback && this._callback(); 2 callback(callback,t){ 3 this._callback = function (){ 4 callback.call(t); 5 } 6 }
在a脚本中创建回调方法,在b脚本里调用,并传入b想要执行的方法,这样a中执行b中想要完成的事件,完成后再a中对this进行修正,在a中执行时达到b想要达到的状态;
[ 6 ] 接口对接
//英雄锁
//英雄锁 Hero.lock = function(data,callback){//——Hero.lock—对应协议里’hero.lock’ ———data对应{heroId : id} ———callback对应function(err,res){} ———callback(null,{goods : [ goods ]})对应res var heroID = data.heroID; db.Goods.get(heroID,function(err,hero){——获取 if(err){ return callback(err); }; if(!hero){ return callback(Error.WrongGoodsId); }; hero.parameter[0] = !hero.parameter[0];//0是false;1是true; db.Goods.set(hero.id,hero,function(err){——保存 if (err) return callback (err) callback(null,{ goods : [goods] }) }) }) };
[ 7 ] 排序
1 //排序 2 //自定义排序方法,层层递归方法 3 var sortFormArr = $nd.BagForm[bagIndex].sort; 4 if (sortFormArr.length !== 1) { 5 var sortByForm = function (a, b, key, isSort) { 6 switch(key){ 7 case ‘order‘ : 8 return isSort > 0?a.parameter[2] - b.parameter[2]:b.parameter[2] - a.parameter[2]; 9 break 10 case ‘lv‘ : 11 return isSort > 0?a.parameter[1] - b.parameter[1]:b.parameter[1] - a.parameter[1]; 12 break 13 case ‘index‘: 14 return isSort > 0 ? a.index - b.index : b.index - a.index; 15 break 16 } 17 } 18 var sortFunIndex = 0; 19 var len = sortFormArr.length; 20 var sortFun = function(a,b){ 21 if(sortFunIndex > len){ 22 sortFunIndex = 0; 23 return; 24 } 25 var ccc = sortByForm(a,b,sortFormArr[sortFunIndex],sortFormArr[sortFunIndex+1]); 26 if(ccc == 0){ 27 sortFunIndex+=2; 28 return sortFun(a,b); 29 }else{ 30 sortFunIndex = 0; 31 return ccc; 32 } 33 } 34 bagGoods.sort(sortFun); 35 }
[ 8 ] 屏幕宽度
屏幕宽度 : cc.view.getVisibleSize();
节点宽度 : this.node.getContentSize();
Sprite的宽高需要在创建的时候添加,加载完成无法更改
节点世界坐标 : this.node.convertToWorldSpace(cc.v2(0,0))[ 按照左下角开始计算 ]
[ 9 ] 复制节点
1 properties: { 2 spain : { 3 default : null, 4 type : sp.Skeleton, 5 tooltip : ‘动画’ 6 } 7 }, 8 //复制节点 9 cc.instantiate(this.spain.node); 10 //实例化 11 cc.instantiate(this.spain); 12 //复制动画节点 13 var newSpain = cc.instantiate(this.BattleData.spain.node); 14 target.roleNode.addChild(newSpain); 15 newSpain.getComponent(‘sp.Skeleton‘).setAnimation(0, ‘Abiaoji‘, false); 16 ///////// 17 // cc.loader.loadResAll(‘Battle‘, function(err, assets){ 18 // if(err){ 19 // return; 20 // } 21 22 // if(assets.length <= 0){ 23 // return; 24 // } 25 26 // var newSpain = new cc.Node(); 27 // target.roleNode.addChild(newSpain); 28 // newSpain.zIndex = -1; 29 // newSpain.x = target.roleNode.x -target.roleNode.width/2; 30 // newSpain.y = target.roleNode.y -target.roleNode.height/2; 31 // var dragonDisplay = newSpain.addComponent(dragonBones.ArmatureDisplay); 32 33 // for(var i in assets){ 34 // if(assets[i] instanceof dragonBones.DragonBonesAsset){ 35 // dragonDisplay.dragonAsset = assets[i]; 36 // } 37 // if(assets[i] instanceof dragonBones.DragonBonesAtlasAsset){ 38 // dragonDisplay.dragonAtlasAsset = assets[i]; 39 // } 40 // } 41 42 // dragonDisplay.armatureName = ‘Battle‘; 43 // dragonDisplay.playAnimation(name); 44 // })
[ 10 ] 排序(每排四个)
1 //随着高度增加整体位置升高 2 //从左到右排列 3 createBuff : function(arr){ 4 //每个元素的宽高 5 var w = 28; 6 var h = 28; 7 //y轴高度基准 8 var centerY = arr.length <= 4 ? 0 : Math.floor(arr.length / 4) * h / 2; 9 for(var i = 0 ; i < arr.length ; i ++ ){ 10 var url = ‘texture/battle/font/buff/‘ + arr[ i ].name; 11 var buffNode = NDTools.createSprite( url , w , h ); 12 this.node.addChild( buffNode ); 13 buffNode.x = ( ( 1 - arr.length ) * w / 2 + w * ( i % 4 ) ) * -1 ; 14 buffNode.y = centerY - h * Math.floor( i / 4 ); 15 } 16 return (Math.ceil(arr.length / 4) - 1) / 2 * h; 17 }
[ 11 ] 播放动画
1 //复制节点 2 var fireNode = cc.instantiate(newSpain.node); 3 //添加节点 4 this.node.addChild(fireNode); 5 //以为复制节点的时候,该动画节点是隐藏状态,所以复制过来也是隐藏的,需要重新打开显隐状态 6 fireNode.active = false; 7 var fire = fireNode.getComponent(‘sp.Skeleton’) 8 //指定动画名称 9 fire.defaultAnimation =‘huo’; 10 //是否循环 11 fire.loop = true; 12 //‘huo’是动画的名字 13 fire.setAnimation(0,‘huo‘,true);
以上是关于cocos随笔的主要内容,如果未能解决你的问题,请参考以下文章
cocos2d-x学习之路——分析AppDelegate和HelloWorldScene文件