Cocos Creator 入门
Cocos Createor
资源
略
场景
- 节点树
- 节点与组件
- 坐标系
脚本
- 组件声明,生命周期回调
var Component = cc.Class({
// 用于序列化,可省略
name: 'some Name',
// 构造函数
cotr: function() {
// 不会覆盖父类的构造函数,自动调用父类构造方法
cc.log(this instanceof Component);
},
// 继承
extends: cc.Component,
// 属性声明,可在编辑器<属性检查其>中可视化编辑。需声明类型
properties: {
id: 20, // value
target: cc.Node, // constructor
pos: new cc.Vec2(10, 20), // obj
frames: [cc.SpriteFrame], // array
// 完整声明
score: {
default: 0,
displayName: "<属性检查器>标签名",
tooltip: "<属性检查器>提示",
visible: true,
serializable: true, // false不可序列化(保存)
type: cc.Label,
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function() {
cc.log("All nodes loaded..");
},
start: function() {
cc.log("All component loaded.");
},
update: function() {
cc.log("request frame.");
},
lateUpdate: function() {
cc.log("After frame update.");
},
onDestory: function() {
cc.log("will be destoried.");
},
onEnable: function() {
cc.log("activate");
},
onDisable: function() {
cc.log("disabled.");
},
});
节点访问
直接创建
var node = new cc.Node('Sprite');
克隆已有节点
var node = cc.instantiate(this.someNodeTarget);
创建预制
var node = cc.instantiate(this.somePrefab);
销毁节点
someNode.destory();
removeFromParent()只是从父节点移除(可能移动到其他节点下面),不会释放内存访问组件/节点
cc.Node.getComponent(); // 访问组件
cc.Node.prop = cc.Node node; // 属性引用
cc.node.children; // 访问子节点
cc.node.getChildByName(); // 子查找
cc.Node.find(path, [root]); // 绝对/相对路径查找
全局模块
// Global.js
module.exports = {foo: null, bar: null};
// somewhere
Global.foo = this.node;
Global.bar = this.getComponent(cc.Label);
场景加载
直接加载
cc.director.loadScene("MyScene");
加载回调
cc.director.loadScene("MyScene", onSceneLaunched);
onSceneLaunched: function() {
cc.game.addPersistRootNode(myNode); // 设置常驻节点,用以在不同场景间保留公共数据(角色信息等。。)
}
预加载
cc.director.preloadSence("senceName", cbFn);
cc.director.loadScene("sceneName");//后台静默加载,需要手动切换
资源加载
- 资源可以作为属性进行设置,也可动态加载
- 动态加载资源必须放在
assets/resources及其子文件夹下面 - 资源的释放需注意依赖关系
cc.loader.loadRes(path, cc.Type, cbFn); // 指定类型加载 cc.loader.loadResDir(dir, cbFn); // 批量加载文件夹 cc.loader.load(remoteUrl, cbFn); // 加载远程资源(仅图片,声音,文本),受跨域策略限制 cc.loader.release(texture);// 直接释放单个资源(无依赖关系) // 释放预制(包含其他依赖)以及它所依赖的资源
var deps = cc.loader.getDependsRecursively(prefab); // 获取其依赖的资源
var idx = deps.indexOf(extra._uuid); // 查找不想释放的依赖资源
index != -1 && deps.splice(idx, 1); // 从集合中移除
cc.loader.release(deps);// 释放所有依赖资源
事件监听
动作/动画
基本动作 https://docs.cocos.com/creator/manual/zh/scripting/action-list.html
moveTo(duration, cc.V2)moveBy(duration, cc.V2)scaleTo(duration, times)skewTo(duration, angle)rotateTo(duration, angle)- ...
播放动作
var act1 = cc.spawn(part1, part2); // 同步动作
var act2 = act1.speed(2); // 与act1相同的动作,但以2倍速度播放
var cbFn = cc.callFunc(func, root, args);
var act3 = cc.repeat(act2); // 重复动作act3
var act4 = cc.sequence(act1, cbFn, act2, act3); // 顺序动作/回调
var action = cc.repeatForever(act4); // 循环重复
cc.node.runAction(action); // 执行动作
cc.tween
对cc.Action的再封装,链式调用更加简洁易用。cc.tween(node)
.to(duration, {scale: x, moveTo: y}) // 相当于 cc.spawn(cc.scale(x), cc.moveTo(y))
.by(duration, {scale: x, moveTo: y}) // 同上
.to(duration, action, {easing: 'sineOutIn'}) // 同时制定缓动函数
.parallel(
cc.tween().to(1, action),
cc.tween().to(2, action), // 同步执行两个 cc.tween
)
.call( () => {console.log("callback function.")} ) // 插入回调
.then(cc.tween().to()) // 嵌套组合
.repeat(times) // 重复以上所有动作
.delay(sec) // 延迟执行
.repeat(times, cc.tween()) // 仅重复这个动作
.start()
高级应用
执行顺序
手动控制。通过自定义load,update方法,统一控制
// Game.js
const Player = require('Player');
const Enemy = require('Enemy');
const Menu = require('Menu');
cc.Class({
properties: {
player: Player,
enemy: Enemy,
menu: Menu,
},
onLoad: function() {
this.player.init();
this.enemy.init();
this.menu.init();
},
update: function(dt) {
this.player.updatePlayer(dt);
this.enemy.updateEnemy(dt);
this.menu.updateMenu(dt);
}
})
executionOrder
cc.Class({
editor: {
executionOrder: -1 // 默认值0,值越小优先级越高
}
});
网络请求
- XMLHttpRequest (Ajax)
- WebSocket
对象池
cc.NodePool- 减少资源的重复创建与销毁
- 循环利用的大量
Prefab unuse()与reuse()?
Cocos Creator 入门的更多相关文章
- cocos creator入门
前面的话 Cocos Creator 是一个完整的游戏开发解决方案,包括了 cocos2d-x 引擎的 JavaScript 实现,以及快速开发游戏所需要的各种图形界面工具.Cocos Creator ...
- Cocos Creator - 入门教程项目 - 博客频道 - CSDN.NET
3457 教程司令部 [20160418] | Cocos Creator - CocoaChina CocoaChina_让移动开发更简单cocoachina.com 2033 Cocos Crea ...
- cocos creator 入门理解点
简单解释, [来源:官方文档] Cocos是触控科技推出的游戏开发一站式解决方案,包含了从新建立项.游戏制作.到打包上线的全套流程.开发者可以通过cocos快速生成代码.编辑资源和动画,最终输出适合于 ...
- cocos creator主程入门教程(七)—— MVC架构
五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇将介绍在游戏客户端常用的架构MVC架构.一个游戏的MVC如下划分: M:1)单例全局的数据中心Wo ...
- cocos creator主程入门教程(一)—— 初识creator
五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 我们在cocos creator新建一个Hello TypeScript项目,都会有一个assets/S ...
- cocos creator 3D | 拇指投篮 | 3D项目入门实战
你的命中率是多少呢?文章底部试玩! 效果预览 配置环境: Cocos Creator 3D v1.0.1 玩法说明: 触摸屏幕,向上滑动投篮!注意篮板是会移动的哦!看看你的命中率是多少! 实现原理 为 ...
- 分形的奥秘!分形着色器!shader 编程入门实战 ! Cocos Creator!
极致的数学之美! 什么是分形? "一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状" 简单来说,分形(fractal)就像这个doge表情包 ...
- 触控的手牌—Cocos Creator
科普 Cocos Creator是触控最新一代游戏工具链的名称.如果不太清楚的,可以先看一些新闻. 新编辑器Cocos Creator发布: 对不起我来晚了! http://ol.tgbus.co ...
- <1>Cocos Creator安装和启动
学习之间需要了解JavaScritp基本语法和面向对象,详情参考https://blog.csdn.net/jadeshu/article/category/7476938 1.下载Cocos Cre ...
随机推荐
- 子域名扫描器 - aquatone
项目地址:https://github.com/michenriksen/aquatone git clone,然后打开 ┌─[root@sch01ar]─[/sch01ar] └──╼ #git c ...
- Python——List
一.集成开发环境 集成开发环境(IDE,Integrated development Enviroment)是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集 ...
- MongoDB在Windows下的环境配置和使用
总是觉得配置环境是一个超级麻烦的事情啊,而且网上说的又比较乱,配置完后又没有说怎么开始运行,在哪输入增删改查语句,像突然断层一样.所以就在这里详细说说. 一:下载安装 1.去官网的下载页面 2.下载完 ...
- IAR FOR ARM 各版…
用过Keil和IAR,个人感觉是IAR还是很不错的.下载地址是: http://files.iar.com/ftp/pub/box/CD-EWARM-6301-3142.zip V6.30.1(该地址 ...
- POJ1657
1.题目链接地址 http://poj.org/problem?id=1657 2.源代码 #include<iostream> using namespace std; int main ...
- printf 的格式
1) 类型类型字符用以表示输出数据的类型,其格式符和意义如下表所示: %c 输出单个字符 %s 输出字符串 %u 以十进制形式输出无符号整数 %d 以十进制形式输出带符号整数(正数不输出符号) ...
- Angular23 loading组件、路由配置、子路由配置、路由懒加载配置
1 需求 由于Angular是单页面的应用,所以在进行数据刷新是进行的局部刷新:在进行数据刷新时从浏览器发出请求到后台响应数据是有时间延迟的,所以在这段时间就需要进行遮罩处理来提示用户系统正在请求数据 ...
- 为什么要有http响应码
其实还是比较容易理解的.这就和你去小卖部买东西一样,老板,我想要一袋大米,那老板先得回答有还是没有,还是说我们这没有,去其它地方买去吧,得先给个说法,这个说法就是http相应码,有了http响应码之后 ...
- quilljs 一款简单轻量的富文本编辑器(适合移动端)
quilljs入门使用教程: quill.js是一款强大的现代富文本编辑器插件.该富文本编辑器插件支持所有的现代浏览器.平板电脑和手机.它提供了文本编辑器的所有功能,并为开发者提供大量的配置参数和方法 ...
- PHP初级经典面试题目汇总
17.isset.empty.is_null的区别 isset 判断变量是否定义或者是否为空 变量存在返回ture,否则返回false 变量定义不赋值返回false unset一个变量,返回false ...