触摸事件

  • Creator 版本:1.8.2

  • 目标平台: Web 模拟器

  • 详细报错信息,包含调用堆栈:

  • 重现方式:在node上添加触摸事件 调用函数的时候properties里有的参数能找到 有的找不到 不知道是不是丢失了 在脚本初始化的时候能打印出来 就是事件函数里找不到 包括当前脚本的函数也找不到

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:
    代码:

cc.Class({
extends: cc.Component,

properties: {


    m_skillid:0,                //记录技能id
    m_skilltype:0,              //记录技能类型
    m_heroname:"null",          //记录技能英雄名字
    m_skillname:"null",         //技能名字
    m_desc:"null",              //技能介绍

    m_isselected:false,         //是否被选中
    m_oldshowZero:0,              //旧的显示高度
    m_showZero:1000,              //显示高度
    m_oldshowScale:0.8,              //旧的缩放
    m_showScale:1.2,              //缩放
    mtouch123:100,
},

// LIFE-CYCLE CALLBACKS:



start () {

},
useskill () {

},

onLoad () {
    this.node.on(cc.Node.EventType.TOUCH_START, this.TouchStartCallBack, this.node);
    this.node.on(cc.Node.EventType.TOUCH_MOVE, this.TouchMoveCallBack, this.node);
    this.node.on(cc.Node.EventType.TOUCH_END, this.TouchEndCallBack, this.node);
    this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.TouchCancelCallBack, this.node);
    
},

TouchStartCallBack:function (event) {
   
    // this.m_touchbegin = this.getPosition();
    console.log("TouchMoveCallBack m_skillid ="+this.m_skillid);
    console.log("TouchMoveCallBack m_skilltype ="+this.m_skilltype);
    console.log("TouchMoveCallBack mtouch123 ="+this.mtouch123);


},

TouchMoveCallBack:function (event)
{
    var pos = event.touch.getDelta();
    //this.convertToNodeSpace(event);
    this.x+=pos.x;
    this.y+=pos.y;
    // this.setPosition(pos);
    // console.log(" Skill TouchMoveCallBack x ="+parm.touch._point.x+"TouchMoveCallBack y ="+parm.touch._point.y);
    // console.log(" Skill TouchMoveCallBack pos x ="+pos.x+"TouchMoveCallBack y ="+pos.y);
},

TouchEndCallBack:function (event)
{
    var currpos = this.getPosition();
    console.log("TouchEndCallBack m_skillid ="+this.m_skillid);
    console.log("TouchEndCallBack m_skilltype ="+this.m_skilltype);
    console.log("TouchEndCallBack mtouch123 ="+this.mtouch123);

},

TouchCancelCallBack:function (event)
{
    console.log(" Skill TouchCancelCallBack"+event);
},

});

输出截图:
Simulator: JS: TouchEndCallBack m_skilltype =undefinedSimulator: JS: TouchEndCallBack mtouch123 =undefinedSimulator: JS: TouchMoveCallBack m_skillid =undefinedSimulator: JS: TouchMoveCallBack m_skilltype =undefinedSimulator: JS: TouchMoveCallBack mtouch123 =undefinedSimulator: JS: TouchEndCallBack m_skillid =undefinedSimulator: JS: TouchEndCallBack m_skilltype =undefinedSimulator: JS: TouchEndCallBack mtouch123 =undefinedSimulator: JS: TouchMoveCallBack m_skillid =undefinedSimulator: JS: TouchMoveCallBack m_skilltype =undefinedSimulator: JS: TouchMoveCallBack mtouch123 =undefinedSimulator: JS: TouchEndCallBack m_skillid =undefined

请问是什么原因

已经解决
原因是用了事例demo 的写法
正确的是:
//触摸按下事件
this.node.on(cc.Node.EventType.TOUCH_START, function(e){
// console.log( “cc.Node.EventType.TOUCH_START”+this.m_useskill );
// if(e.target == this._selectedMJ){
// return false;
// }
// if(this._selectedMJ != null){

        // }  
        // this._selectedMJ = e.target;
        return true;  
    }.bind(this), this );

this.node.on(cc.Node.EventType.TOUCH_START, this.TouchStartCallBack, this);

1赞