Cocos Creator基础

一、坐标系

坐标用Vec2或者Vec3表示(Vector,向量)

Vec2:二维坐标(x, y)
例如:pos = new cc.Vec2(100, 100);
pos = cc.v2(100, 100);

Vec3:三维坐标(x, y, z)
例如:pos = new cc.Vec3(100, 100, 0);
pos = cc.v3(100, 100, 0);

取得一个节点的坐标:
let pos: cc.Vec2 = node.getPosition();
设置一个节点的坐标:
node.setPosition(cc.v2(100, 100));
设置一个节点的缩放:
node.setScale(cc.v3(1, 1, 0));
这个分别表示为x轴,y轴和z轴的缩放比例。

注意:Node.position是相对坐标,相对于父节点。

二、缓动系统

其他的系统:物理系统、碰撞系统、粒子系统等。

缓动,就是缓慢地动,呈现渐动效果。

例如:从(100,100)到(-100,-100)

直接移动为:node.setPosition(cc.v3(-100, -100, 0);

缓动:cc.tween(node).to(1, {position: cc.v3(-100,-100,0)}).start();
这种写法为链式调用;to(duration, args)中duration表示缓动的时长,args表示结束的参数。

更多的用法:
连续动作:先位移、后旋转
cc.tween(node)
.to(1, {position: cc.v3(100, 100, 0)})
.to(1, {rotation: 360})
.start();

并发动作:位移、旋转同时进行
cc.tween(node)
.to(1, {position: cc.v3(100, 100, 0), rotation: 360})
.start();

三、cc.tween用法

1、区分to和by

cc.tween(node).to(…).start()表示对属性进行绝对值计算,传入最终值。

cc.tween(node).by(…).start()表示对属性进行相对值计算,传入改变值。

2、变速运动easing

默认地,从A状态到B状态是匀速改变地。
cc.tween(node).to(duration, props, easing);

例如:速度越来越慢(速度时间地平方)
cc.tween(node)
.by(1, {position: cc.v3(0, 100, 0)}, {easing: ‘quadOut’})
.start();

四、动画

update()每一秒调用60次,即帧率FPS = 60。

帧动画的特点:

  • 每帧之间的变化较小
  • 帧率高

注意:帧动画不是连续的,每帧之前有16毫秒的间隔。

五、帧率

帧率FPS,实际指的是update()的调用频率。如果update()里没有变化,则游戏画面是不会重绘的。

在update(dt){}中,dt指上一帧的时间间隔,一般dt约为0.016秒,但并不是一个精确数字,或长或短。

一般来说,帧率越高,操作系统的负载越大,可以适当调低帧率:cc.game.setFrameRate(30);
其中cc.game是一个全局对象。

注意:帧率是一个全局设置,所以最好在游戏的初始化脚本中设置,可以建立一个脚本挂在Canvas节点下。

节点的加载顺序:根节点Canvas先于子结点加载。

六、状态控制

1、添加节点的运动状态
direction: cc.Vec2 = null;
(1, 0)向右
(-1, 0)向左
(0,1)向上
(0,-1)向下
null表示原地不动

2、添加按键响应
按下相应的键时,改变运动状态。

3、实现update()
根据当前的运动状态,更新节点的位置。

七、计时器API

Cocos Creator提供的一套计时器API封装在cc.Component中。

启动定时器:
comp.schedule(callback, interval)
comp.schedule(callback, interval, repeat, delay)

停止定时器:
comp.unschedule(callback)

完整调用计时器可以传入4个参数。
comp.schedule(callback, interval, repeat, delay)
callback, 计时器回调
interval, 每次时间间隔
repeat, 重复次数
delay, 多少秒后还时启动

注意:传入回调方法的名字时不能加小括号。

八、gif显示

在Cocos creator里使用GIF,需要预先处理。

相关使用方式:
1、提取出每一帧图片,添加到项目中。
2、制作为图集资源Atlas,添加到项目中。

方式1的步骤:

  • 从GIF中提取每一帧,提取出来的PNG图片应该背景透明。
  • 将所有图片添加到项目。
  • 对每张图片逐一设置。注意需要将属性检查器的Sprite中的Trim Type设置为None,以保证每一张图片的大小相同。

使用脚本来循环显示图片:

  • 添加一个图片节点。
  • 添加一个脚本挂在该节点上,该脚本可以循环显示N张图片。
  • 在属性面板中,指定要显示的图片数组。

注意:定义数组类型的属性
@property([cc.SpriteFrame])
frame: cc.SpriteFrame[] = [];

图集Atlas
图集Atlas,由多张小图合成的一张大图。

九、资源的加载

静态加载:直接在属性管理器中指定,在节点被加载时一并加载。
动态加载:在脚本中使用代码cc.resources.load()运行时加载。

十、加载多个资源

1、指定多个资源路径
cc.resources.load(paths, callback(err, assets){…})
其中paths类型[cc.String],assets类型[cc.Asset]
2、指定一个资源目录
cc.resources.loadDir(path, callback(err, addets){…})
其中path是一个文件夹路径,assets是[cc.Asset]

十一、触摸事件

触摸事件:touchstart, touchmove, touthend, touchcancel。
鼠标事件:mousedown, mousemove, mouseup, mousewheel, mouseenter, mouseleave

相关的事件类型为:cc.Event.EventTouch
注意:事件中的坐标位置(x, y)是世界坐标。

十二、事件冒泡机制

当一个节点接收到触摸事件时,在处理完之后,该事件会依次上浮到父节点、祖父节点。

注意:

  • 同级节点不会接收到此touchstart事件。
  • 即使子结点在父节点区域之外,此事件也会传给父节点。
  • 可以阻止事件的传递:e.stopPropagation()则此事件到此为止,不会继续后面的传递。

十三、遮罩效果

Widget组件用于辅助定位。

十四、Block Input Events

Block Input Events是一个自带的组件,用于阻止输入事件。

十五、动态创建节点

例如:动态创建一个节点,添加Sprite组件,然后挂在当前节点下面:
let bullet : cc.Node = new cc.Node();
let sprite : cc.Sprite = bullet.addComponent(cc.Sprite);
sprite.spriteFrame = this.bulletIcon;
bullet.parent = this.node;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值