微信小游戏在真机出现错误,不知是否为BUG?
发布于 5 年前 作者 duanli 18433 次浏览 来自 问答

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

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

* 如何复现?

每次必现。

* 提供一个最简复现 Demo

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

6 回复

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”)

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

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

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

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

原代码:

    this.render(ctx)

    this.top = 0

修改后代码:

    this.top = 0

    this.render(ctx)

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

    //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)

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

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

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

回到顶部