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);

时间: 2024-08-25 13:13:02

cocos随笔的相关文章

cocos creator随笔

接触一个月cocos creator做个笔记... 1.socket.io 封装了websocket , Ajax等,故任何浏览器都可以使用socket.io建立异步连接.websocket 双向需要握手建立连接,http 单向. 短连接:一次性交换数据,如登入,创建角色等  长连接:推送 (一) socket.emit('tell one person'); socket.broadcast.emit('tell to everyone'); socket.on('I heard',funct

cocos Creator js 房卡麻将/血战/H5四川麻将源码下载搭建

房卡麻将/血战/H5四川麻将 源码 支持iOS/Android/H5 完整源码 1.基于NODEJS+MYSQL的服务器,成熟的技术方案,高效稳定,且方便Windows开发,Linux平台布署,节约服务器运转成本. 2.采用最新版本的cocos引擎,cocos creator开发,可快速的进行界面调整.且能够快速地发布iOS,Android版本. 3.如需H5版本,只需针对H5平台进行资源优化即可. 4.成熟可靠的房卡式设计,能满足大部分用户使用体验. 5.产品经过大量测试,可以运转稳定. 测试

C#博客随笔之六:数据绑定

这一篇随笔记录的是在完成程序中遇到的一些情况 首先要讲的是MVVM 所谓MVVM就是Model,View,ViewModel 下面是MVVM的优点(引用自百度百科): MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点1. 低耦合.视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变.2. 可重用性.你可以把一些视图

学习cocos 空程序

今天开始学习cocos代码,首先研究源码中的空程序. 在这个程序中,在main函数中,创建了一个Application: int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // create th

Cocos数据篇[3.4](4) ——plist文件操作

[唠叨] 在Cocos中,plist文件 是非常常见的配置文件.它是特定格式的xml文件. 例如:小图打包成大图的纹理图片.制作粒子特效.帧动画等,都用到了plist文件作为配置文件. 本节要介绍的是:如何创建plist文件,以及读取plist文件中的数据信息. [扩展阅读] http://zh.wikipedia.org/wiki/Plist (维基百科) http://zengrong.net/post/1981.htm (COCOS2D-X中的PLIST文件格式详解) http://cn.

Cocos移植到Android的一些问题-SQLite3数据库移植问题

首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一种是从SQLite官网下载源代码拷贝的工程中.第一种方法配置起来比较麻烦,关键是Cocos2d-x提供的SQLite3库只是Win32没有其它平台的,目录结构如下所示.<游戏工程目录>\cocos2d\external\sqlite3│  Android.mk│├─include│      sq

Cocos开发中性能优化工具介绍之使用Windows任务管理器

说到Windows平台,我们很快就想到了Visual Studio 2012,然而Visual Studio 2012在这方面没有很好的工具.如果我们只是想知道大体上内存.CPU等在某一事件前后变化情况,我们可以使用Windows任务管理器.Windows任务管理器对于很多用户都不陌生,自从有Windows操作系统以来,这个工具就伴随着Windows.打开任务管理器方法也有很多,在Windows7和Windows8平台可以使用Ctrl+Shift+Esc 组合键调出:也可通过Ctrl+Alt+D

Abby&#39;s 学习php5随笔

2017.6.27 Abby's cakephp2 学习之旅 下载了XAMPP集成开发环境,然后配置其数据库,参考学习教程, 1.建立表单. 配置完信息如下,Cache Apache默认在windows下是system用户,所以权限最高,但xampp集成环境中的apache确是administor 如何更改apache用户为system 静默开发.(一种开发方法,番茄ToDo中的学霸模式有些相似) 如何设置.ctp的显示 http://cakephp2.local/posts/index怎么就可

java基础随笔 字符数据类型char的单引号

public class Love{ public static void main(String[] args){ System.out.println('*'+'\t'+'*'); System.out.println("*"+"\t"+"*") } } 运行结果   第一行为  93 第二行为  *        * 原因 第一行中'\t' 单引号  识别为字符数据类型char,char类型是可以运算的,在第一行中+做了运算符. 第二行&q