CocosCreator事件系统(笔记)

Cocos Creator事件系统

canvas和Main Camera

canvas主要用来场景的适配,所以最好把所有的UI和可渲染节点放在canvas的节点下

Main Camera是用来控制游戏显示的范围和位置(视角)

计时器

定时进行某些操作

1、开启定时计时器

onLoad(){
    this.schedule(
        function(){
            函数体
        }
    ,5)//两个参数,一个局部函数函数,一个时间,每5s执行一次
   
    this.scheduleOne(
    function(){
        函数体
    },5)//5s后执行,只执行一次
    this.schedule(
        this.callFun()
    ,5)//每5s执行一次callFun()
}
callFun(){
    函数体
}

2、关闭定时计时器

this.scheduleOne(
    function(){
        this.unshedule(this.callFun);//参数是回调函数
    },5).bind(this)//5s后执行,只执行一次,其中bind(this)为绑定this,关闭一个定时器

this.unsheduleAllCallbacks();//关闭当前所有的计时器

事件系统

事件发生发送给事件分发器,再由事件分发器发给事件监听,再由事件监听回调函数处理

事件->事件分发器->事件监听->由回调函数处理

事件可以多个发送,也有多个监听器来处理,根据事件的类型来分发。

鼠标事件

五种情况

//按下
cc.Node.EventType.MOUSE_DOWN
//松开
cc.Node.EventType.MOUSE_UP
//进入节点范围
cc.Node.EventType.MOUSE_ENTER
//离开节点范围
cc.Node.EventType.MOUSE_LEAVE
//滚轮
cc.Node.EventType.MOUSE_WHEEL

例子:

this.node.on(cc.Node.EventType.MOUSE_DOWN,function(event){
    //返回点下的坐标
	console.log("鼠标按下"+event.getLocation());
    //返回点下的x坐标
    console.log("鼠标按下"+event.getLocationX());
    //判断是否为左键
    if(event.getButton == cc.Event.EventMouse.BUTTON_LEFT)
    //判断是否为右键
    if(event.getButton == cc.Event.EventMouse.BUTTON_RIGHT)
})
//停止监听
this.node.off(cc.Node.EventType.MOUSE_DOWN)

触摸事件

四种情况

//点下
cc.Node.EventType.TOUCH_START
//松开
cc.Node.EventType.TOUCH_END
//按下的同时移出范围
cc.Node.EventType.TOUCH_CANCEL
//移动
cc.Node.EventType.TOUCH_MOVE
this.node.on(cc.Node.EventType.TOUCH_START,function(event){
	//返回触摸的ID,可以实现多点触摸
    event.getID()
    //返回坐标
    evetn.getLocation()
})

键盘事件

两种情况

//按下
cc.SystemEvent.EventType.KET_DOWN
//松开
cc.SystemEvent.EventType.KET_UP
cc.systemEvent.on(cc.SystemEvent.EventType.KET_DOWN,function(event){
	if(event.keyCode == cc.macro.KEY.w){
        console.log("w");
    }
});

自定义事件

onLoad(){
    let ec = new cc.EventTarget();//创建事件
    ec.on("DEAD",function(){
        函数体
    });//接收事件,参数1为事件名,参数2为事件回调函数
    ec.on("DEAD",()=>{
        函数体
    });//接收事件,参数1为事件名,参数2为事件回调函数
}
ec.emit("DEAD");//事件发送,参数1事件名字,后续参数是回调函数的参数
ec.emit("DEAD",1,2,3,4);//和接收事件的回调函数的参数数量相同
ec.dispatchEvent(new cc.Event.EventCustom("事件名",true));//事件分发,可以传递给不同的节点,true表示用冒泡的方式传递,不好用

取消监听

ec.off("DEAD");//参数为事件类型
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值