zoukankan      html  css  js  c++  java
  • cocos-creator 脚本逻辑-1

    1.节点

    编辑组件的脚本文件时。可以通过以下语句获得节点

    this 就是当前组件

    this.node

    拿到组件依附的节点 

    This.node.parent

    拿到组件依附的节点 的父节点

    This.node.children

    拿到组件依附的节点 的子节点

    this.node.getChildByName(‘’)

    通过名称取得特定名的直系子节点

    cc.removeSelf() 

    从节点树删除该节点 留在内存,但已经不在节点中 如果 args = true 则消失

    跨直系引用节点

    在properties 中声明 node 对象再在编辑器中拖拽绑定

    就可以在组建内部直接引用

    两个属性

    默认组件名样式 name:节点<组件>

    isValid 组件是否还在活动

    2.动作

    所有的动作 api 是由节点提供的,所以我们要先拿到节点

    如 node.runAction()

    1)动作运行:

    runAction('action') 开始一个动作

    stopAction(‘action’) 停止一个动作

    stopAllAction() 停止该节点下的所有动作

    2) 设置tag

    action.setTag('tag_name')

    node.getActionByTag('tag_name')

    3)移动

    cc.moveTo(1,20,20) 用 1s 以父节点锚点为坐标中心移动到(20,20)的位置

    可以移动到一个点的相对位置,比如可以换成 cc.v2(100,100) 以c2为坐标的(100,100)

    cc.rotateTo(1,50) 1s 第二个参数是角度

    cc.moveBy() 相对移动

    cc.scaleTo(1,2,2) 1s 放大到 2,2 scale

    cc.fadeOut(1) 1s 消失

    4)动作包装

    包装为一个动作

    cc.sequence(

    动作1,

    动作2

    )

    5)容器动作

    顺序动作:cc.sequence

    可执行来回往复运动,如:

    var seq = cc.sequence(cc.moveBy(0.5, 200, 0), cc.moveBy(0.5, -200, 0));

    node.runAction(seq);//左右来回移动

     

    同步动作:cc.spawn

    可执行叠加系列动作,如:

    var spawn = cc.spawn(cc.moveBy(0.5, 0, 50), cc.scaleTo(0.5, 0.8, 1.4));

    node.runAction(spawn);//向上同时缩放

     

    重复动作:cc.repeat

    可执行重复一个动作,如:

    var seq = cc.repeat(
                 cc.sequence(
                     cc.moveBy(2, 200, 0),
                     cc.moveBy(2, -200, 0)
                 ), 5);
     node.runAction(seq);//左右移动,重复5次


    永远重复动作:cc.repeatForever
    可执行一直重复动作,如:
     var seq = cc.repeatForever(
                 cc.sequence(
                     cc.moveBy(2, 200, 0),
                     cc.moveBy(2, -200, 0)
                 ));//一直重复左右移动


    改变速度:cc.speed
    可执行改变速率,如:
    var action = cc.speed(
                     cc.spawn(
                         cc.moveBy(2, 0, 50),
                         cc.scaleTo(2, 0.8, 1.4)
                     ), 0.5);
     node.runAction(action);//速度加快一倍,2秒变1秒
     
     

     

    3.回调函数 callFunc

    cc.callFunc(this.callBack, this, {'args':args}) 函数,对象,参数

    callBack :function(targetNode, args){}

     

    4.事件/交互内容

    添加 Label 内置组件来添加名称,方便于判断

    在操作过程中记得返回编辑器拖拽补充引用。

    emit 和 on 配套 发射和监听

    This.node.emit(”事件“,{参数}); 发生“事件” 同时给出参数

    this.node.on(”事件“,this.event1, this.node1) 发生了“事件”后 执行 event1 执行对象是这个 node

    this.node.on(”事件“,this.event2,this.node2)

    限制:(参数必须和 on 一致 )

    this.node.once() 只监听听一次 

    this.node.off() 不再监听 on 

    实例:

    这里的 this 指的是 node1

    1.  
      event1: function(e){
    2.  
      console.log(e.detail),
    3.  
      this.runAction(cc.moveTo(1,200,0))
    4.  
      },

    5 触摸事件 鼠标事件 键盘事件

    1)触摸(因为用的比较多这个写完整,其它都只写一个)

    This.node.on(‘touchStart’,this.onTouchStart, this) 开始触摸

    this.node.on(‘touchmove’,this.onTouchMove,this); 触摸移动,持续触发

    this.node.on(‘touchEnd’,this.onTouchEnd, this) 触摸停止

    this.node.on(‘touchCancel’, this.onTouchCancel, this) 触摸取消,(节点外释放)

    This.node.on(‘mouseup’,this.onMouseUp,this)  鼠标脱离

    mouseDown onMouseDown 鼠标按下 

    mouseMove onMouseMove 鼠标移动(不一定要点击)

    mouseEnter onMouseEnter 鼠标进入节点区域

    mouserLeave onMouseLeave 鼠标离开节点区域

    mouseWheel onMouseWheel 鼠标滚轮

    获取点击

    getButton() 返回 0 1 2 对应 左中右

    2)键盘事件 

    cc.systemEvent.on(type,callback,target)

    返回一个 keycode 

    可选的 type 类型有:

    1. cc.SystemEvent.EventType.KEY_DOWN (键盘按下)
    2. cc.SystemEvent.EventType.KEY_UP (键盘释放)
    3. cc.SystemEvent.EventType.DEVICEMOTION (设备重力传感)

    例如

    cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);

    If e.keyCode == cc.KEY.w 当 keycode 是 w 时

    cc.KEY.(按键)

    3)获取坐标

    getLocation() 获取全局坐标下的圆心

    例子:

    onTouchStart: function(e){

        E.getLocation() 

    }

    坐标转换:从全局坐标系转到本地坐标系

    let locationOfThisNode = this.node.convertToNodeSpaceAR(e.getLocation()) AR 忽略锚点 this.node目标坐标系对应节点

    让某个节点的坐标更新

    this.node.position = locationOfThisNode

  • 相关阅读:
    Mysql查漏补缺
    RabbitMQ学习笔记
    memcache学习笔记
    Redis问题整理
    JedisCluster获取key所在的节点
    JavaSE编程题
    IDEA快捷键 日常整理
    Idea 常用快捷键列表
    【C++】 构造函数为什么不能声明为虚函数,析构函数可以
    【算法笔记】买卖股票问题--DP/贪心算法
  • 原文地址:https://www.cnblogs.com/Joe-and-Joan/p/9638941.html
Copyright © 2011-2022 走看看