收藏
回答

小游戏,在canvas上判断点击的哪个对象,只能用像素判断吗?

刚开始做小游戏,基于官方小游戏生成的demo做的,问下在canvas上判断点击的是哪个对象,只能基于像素计算吗?整个页面很多图片对象,每个图片对象绑定的事件不同,这样判断很麻烦。

我这种情况是不是应该采用页面小程序的开发模式,而不是小游戏画布方式实现?

最后一次编辑于  08-27  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 宏
    08-27

    可不可以通过触摸事件的x和y坐标来判断?当触摸的xy坐标在一个对象的坐标内时即可判断为点击的是该对象。可参考官方飞机游戏的示例代码:

    /**

      * 当手指触摸屏幕的时候

      * 判断手指是否在飞机上

      * @param {Number} x: 手指的X轴坐标

      * @param {Number} y: 手指的Y轴坐标

      * @return {Boolean}: 用于标识手指是否在飞机上的布尔值

      */

    checkIsFingerOnAir(x, y) {

    const deviation = 30


    return !!(   x >= this.x - deviation

    && y >= this.y - deviation

    && x <= this.x + this.width + deviation

    && y <= this.y + this.height + deviation  )

    }



    08-27
    赞同
    回复 3
    • 韩先生
      韩先生
      08-28
      谢谢!我讲的基于像素就是这个意思,因为主页上需要事件交互的图片比较多,用这种方式判断比较麻烦,有重叠图片的话,判断不了。用小程序页面开发方式,每个image元素可以单独绑定事件,貌似这样更容易些。
      08-28
      回复
    • 宏
      08-28回复韩先生

      可以试下哈

      08-28
      回复
    • 黄力钧
      黄力钧
      08-29回复韩先生
      如果你是开发单独的小游戏的话,选择小程序是没有对应类目的,所以即时你随便选择了一个类目,最终也是过审不了的,我之前有经历过这样的教训,所以建议只是开发小游戏应用的话,必须用微信小游戏环境开发,而不能选择微信小程序。
      08-29
      回复