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         // })
View Code
[ 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 }
View Code
[ 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);
View Code


以上是关于cocos随笔的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d-x学习之路——分析AppDelegate和HelloWorldScene文件

第五周作业 项目开发随笔

Xcode 运行cocos2dx弹出内部错误对话框

cocos2d-x 2.x 学习与应用总结11: 理解CCGLProgram

经济随笔

日常学习随笔-自定义了一个双链表(注释蛮详细的)