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‘,function(){...});

2、 scrollview组件,只有content节点比scrollview大时,才可以滚动。

3、mask属于渲染组件,不能和其他渲染组件共同存在于同一节点。(如sprite,label)

4、全局定义,a.使用window申明如:window.global = {...} ; b.使用cc 如cc.gv = {} ; cc.gv.voiceMgr = new voiceMgr();

c.使用常驻节点:cc.game.addpersistRootNode(this.node);

d.module.exports = {...}; 每个脚本都能用 require +文件名 获取exports对象;

5、事件派发

a.target.on(window.myTypeA,this.callback,this);  this.node.emit(window.myTypeA,{...});

6 、继承:js原型链继承prototype和基于类的继承extends;

如:Player--> Actor--->cc.Commponent(extends); (注意:this._super()的使用);

组件基类:cc.Commponent(this.node  this.enable  update(dt)  onLoad()  start())

=>p.s. 当组件从disable回到enable,start会再次被调用, enable=>onEnable()  ; destroy=> onDestroy();

这里值得说的就是构造函数:如

var Node = cc.Class({ctor:function(){this.name = ‘node‘}});

var Sprite = cc.Class({extends:Node,   ctor:function(){this.name = ‘sprite‘}});

不论子类是否定义构造函数,子类实例化前父类的构造函数都会自动被调用,写个this._super()就画蛇添足了。

还有一点,在构造函数被调用前,属性已被赋值为默认值的可以在构造函数里被访问到。

7、获取节点:

a.层次浅:this.node.getCommponent(...);   this.node.getChildByName(...);

b.层次深: cc.find(‘../../..‘,this.baseNode);从baseNode开始查找

cc.find(‘../../..‘);从场景根节点开始查找

c.脚本属性声明 testNode:{default:null, type:cc.Node},编辑器(层级管理器)拖拽 , this.testNode调用

属性声明:简单:height:10 ,pos:cc.Vec2 ,pos:new cc.Vec2(10,20),

完整:score:{default:0, displayName:‘score‘,tooltip:‘this is score‘, visible: true, serializable: false}

另外:_width:0,width:{get: function(){return this._width;} set:function(value){this._width = value;}}

可在编辑器的属性检查器里进行设置

8、this.node.children 只返回直接节点的子节点。   另:this.node.childrenCount;

9、一些常见的属性  :mysprite.node.color = cc.Color.RED;(opacity)

this.node.position = cc.p(0,0); this.node.setPoition(0,0)||(cc.p(0,0));

node.setLocalZOrder();

(rotation setRotation,scale setScale, width height setContentSize , anchor setAnchorPoint等)

10、动态创建模式:

let node = new cc.Node(‘...‘);

let sp =node.addComponent(cc.Sprite);

sp.spriteFrame = ...;

node.parent = ...; (等同于 ...addChild(node))

node.setPosition(...);

11、 关于触摸:上层节点注册touch/mouse事件,下面节点是收不到的,除非父节点通过冒泡。(当然上层节点是下层节点的子节点,冒泡才有效)

因为事件是沿着节点的parent向上冒泡的,

12、一些不常用的方法:(鸡肋)

let children = cc.directoer.getScene().getChildren();

cc.game.setFrameRate(30);

13、一句值得思考的话:js里的函数和变量本质是一样的(把函数当作参数);

let plus = function(a ,b){ return a+b};

let dd = function(f,a,b){return f(a,b)};

dd(plus,2,3);

14、关于静态变量: 可直接调用,不需要new一个对象,且子类变化父类不变,父类变化子类也同样不会变化。

15、 隐形回调:(我这么定义了)

this.node.active = false; 组件上有onDisable()将被执行 同理 = true ;onEnable()将被执行。

16、克隆已有节点与创建预制节点 :cc.instantitate;

17、在svn同步上,更新后报错,统一项目creator版本,把.meta加入svn。

18、关于tiledMap:

加载:cc.loader.loadRes(‘map/‘+name,function(err,map){ this._tiledMap.tmxAsset = map});

释放:var deps = cc.loader.getDependsRecursively(tmxAsset);

cc.loader,release(deps);

19、一句关于creator的精髓:组件都是存粹的数据,只有系统才能够操作他们。

时间: 2024-10-08 08:32:18

cocos creator随笔的相关文章

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

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

【COCOS CREATOR 系列教程之四】基于0.7.1先简单制作一个PAGEVIEW

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos-creator/1999.html 由于当前版本还没有发布1.0,因此还有不少组件没有发布,那么Himi也看到Cocos Creator群里有几个童鞋问起过PageView的问题,那么Himi正好借此练手,基于当前版本制作一个PageView. 本文分为两部分进行讲解: 1. 制作PageView     2. 如何使用 一. 制作

【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合

[Cocos Creator ](千人群):  432818031 上一篇,介绍了Himi在使用过cc所有组件后的一篇总结,没有具体介绍每个组件的原因在于官方文档很齐全,而且也有视频的介绍. 所以希望童鞋们可以把我这两篇博文当成对组件.脚本两部分开发的整理与总结. 后续的文章,Himi应该主要更新一些官方还未补充或者还没有的教程.避免无用功. 下面直接放出代码,因为不是很难理解.所以不再一一赘述,都是常用的函数.事件监听.动作回调.定时器等开发过程中必接触的. 大致内容如下: cc 属性介绍 获

Cocos Creator—如何给资源打MD5版本号

Cocos Creator 是Cocos最新一代的游戏开发者工具,基于 Cocos2d-x,组件化,脚本化,数据驱动,跨平台发布.Cocos Creator的开发思路已经逐步跟Unity 3D靠拢,写起来也更方便快捷,开发效率更高. 但既然是新东西,免不了各种坑.其中在发布Web Mobile平台上,就有各种小问题,例如给资源加上md5版本号,Cocos Creator就不支持.从16年底开发组就说要支持MD5 Cache,等了大半年,新的1.6内测版本终于增加了MD5 Cache的功能,但效果

Cocos Creator—定制H5游戏首页loading界面

Cocos Creator从1.0版本发布到现在也有一年多了,按理说一些常见的问题网上都有解决方案,例如"如何自定义首页加载进度条界面"这种普遍需求,应该所有人都会遇到的,因此也有完善的解决方案才对.我在网上搜了一些文章,虽然也有讨论的帖子,但是方案都不尽人意.因此只能再次自己动手丰衣足食了,在此我总结一下我的思路和策略,分享给大家,希望后来的人少走弯路,另外这里的方案只针对H5游戏发布,其他平台可以借鉴思路自己实现. 首页加载的loading界面,官网的文档并没有提及,我是通过构建发

Cocos Creator—优化首页打开速度

Cocos Creator是一个优秀的游戏引擎开发工具,很多地方都针对H5游戏做了专门的优化,这是我比较喜欢Cocos Creator的一点原因. 其中一个优化点是首页的加载速度,开发组为了加快首页的渲染速度,减少白屏时间,把逻辑代码和首页加载代码做了彻底分离.首次页面加载的只是一个相当于加载器的初始化文件,文件体积特别小,不像某些引擎,一开始就需要加载主逻辑js文件,一开始就给我来个上百kb的文件加载,然后才能显示loading条,白屏时间当然会延长不少. 说到这里,不得不吐槽一下Cocos的

cocos creator动画编辑器学习

动画是一个渐变的过程,怎么样在cocos creator的动画编辑器中实现这个过程. 一.层级关系: 1节点.2动画(Animation).3动画剪辑(Animation Clip).4属性轨道.5动画帧 a.  动画(Animation)是节点上的一个组件. b.  动画剪辑(Animation Clip)就是一份动画的声明数据,将它挂载到动画(Animation)上作为一个属性进行设置. c.  动画剪辑(Animation Clip)上可添加多个属性轨道来控制不同属性. d.  在一条属性

关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项

1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/anchor_lb/spineboy"); 2.用getComponent()方法找到相应骨骼动画节点的骨骼动画组件,并把这个对象赋值给一个var出来的新对象. 具体代码:var ske_anim_comp = spineboy_anim.getComponent(sp.Skeleton); 3.把第二点的新

cocos creator Touch事件应用(触控选择多个子节点)

最近参与了cocos creator的研究,开发小游戏,结果被一个事件坑得不行不行的.现在终于解决了,分享给大家. 原理 1.触控事件是针对节点的 2.触控事件的冒泡,是直接关系冒泡,父子可以,孙子不行,就是不能隔代冒泡 3.父节点不响应触控事件,肯定是被孩子节点遮挡了,只要孩子节点也监听一下事件,父节点就可以响应了 4.触控位置是绝对坐标,相对于整个canvas,节点位置相对于父节点,相对位置可以与绝对坐标相互转化 5.节点是否被触控到,touch start事件可以肯定被触摸到,但是一个节点