html52.com
我爱小程序-开发者交流社区

微信小游戏在真机出现错误,不知是否为BUG?

问题模块 操作系统 工具版本
开发者工具 Windows V1.02.1712280

微信小游戏开发工具自带的DEMO,在PC调试没有问题,到真机体验“重新开始”时出现错误:


* Bug 表现是什么?预期表现是什么?

* Bug 表现是什么?预期表现是什么?* 如何复现?

* 如何复现?

每次必现。


* 提供一个最简复现 Demo

微信小游戏开发工具自带的Demo。



网友回复

Jack黄:

不谢,欢迎关注我的公众号:ThreeIsAll。

Wang:

感谢,搞了半天,终于找到问题了

Jack黄:

NND,终于把问题定位出来了!!!那个该死的程序猿写的?

1、render方法中会用到top属性,top属性没有初始化,在PC模拟器中不会出错。

2、在手机上,top属性没有初始化和赋值,在执行render中用到top属性被认为时NULL而出错。


BackGround类的构造函数中两行代码改一下顺序,就好了~~

原代码:

    this.render(ctx)

    this.top = 0


修改后代码:

    this.top = 0

    this.render(ctx)





Jack黄:

    //调试代码,在手机上会出错

    //let ctx = canvas.getContext('2d')

    console.log("At restart: canvas, ctx: ", canvas, ctx)

0107:可能出错在下面代码中,后面的LOG信息没有显示出来。

   

         this.bg       = new BackGround(ctx)

    this.player   = new Player(ctx)

    this.gameinfo = new GameInfo()

    this.music    = new Music()


    console.log("At restart: bg, player:", this.bg, this.player)


Jack黄:

20180107:   

通过增加LOG信息,打开DEBUG开关,在手机查看LOG信息。

初步判断是下面代码中的window对象存在“循环引用”,在第一次启动后被系统给释放掉了。


Demo中代码如下:

   this.bg       = new BackGround(ctx)

    this.player   = new Player(ctx)

    this.gameinfo = new GameInfo()

    this.music    = new Music()


    console.log("At restart: bg, player:", this.bg, this.player)

    console.log("At restart: window:", window)


    window.requestAnimationFrame(

      this.loop.bind(this),

      canvas

    )

    console.log("At restart: after window.requrestAnimationsFrame")



Jack黄:

请各位大侠帮解答一下,多谢!

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付