当微信小游戏遇到错误:thirdErrorReport或者是_this.* is not a function

10 篇文章 0 订阅
5 篇文章 0 订阅

软件定制,代码排错:小蓝阿姨的店铺



前言

这个错误,很坑,我找了好多地方都没有这个的解决方法,其实这是一个js作用域的问题。
标题写着两个报错,其实算是一个报错的问题,全都是作用域的问题。


问题初显

我最终排查后,发现问题就是发生在绑定事件的回调函数的函数作用域上面
在小游戏中编写代码的时候,我遇到了这一个问题
在这里插入图片描述
当时我代码是这样子的

initGame () {
    // 绑定点击事件
    mDataBus.canvas.addEventListener('touchstart', this.touchHandler)
    mDataBus.canvas.addEventListener('touchend', this.touchHandler)
  }

  touchHandler (event) {
    console.log(this.moveBlock)
  }
// 明明这个函数在的
  moveBlock(type) {
    console.log(type)
  }

明明这个函数在的,却给我提示undefined,当时我就愣住了。
我以为是基础库的问题,我就换了一下基础库,发现报错信息变成了
Cannot read property 'thirdErrorRepor' of undefined
我直接更楞住了,一套百度,找不到答案,算了,自己排了。
提示找不到那个函数,说明是我作用域的问题
我就先试着把我的函数改成了一下箭头函数试试。
还是提示undefined
因为我断定了一下是作用域的问题。
所以我直接在绑定事件函数的那个地方下手小调整了一下。

// 绑定点击事件的那个地方
mDataBus.canvas.addEventListener('touchstart', this.touchHandler)
mDataBus.canvas.addEventListener('touchend', this.touchHandler)

修改方法

修改方法很简单。使用函数传函数就好了。

// 改成这种形式
mDataBus.canvas.addEventListener('touchstart', (event) => this.touchHandler(event))
mDataBus.canvas.addEventListener('touchend', (event) => this.touchHandler(event))

最终我们就解决了这个问题嘞
在这里插入图片描述
小游戏很多地方还是比较坑的。
希望我这篇文章能帮助到一些小游戏开发人员吧,真的是太坑了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蓝阿姨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值