收藏
回答

微信小游戏如何判断当前点击的图片部分是不透明像素?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 需求 canvas 微信iOS客户端 8.0 2.20.0

例如小游戏测试号飞机大战demo里的这段代码

/* {demo}/js/player/index.js 第39行 */


/**
   * 当手指触摸屏幕的时候
   * 判断手指是否在飞机上
   * @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)
  }

这段代码只判断了手指是否在飞机图片上,而不是判断是否在飞机图片的不透明像素上,如果我想改成只能点击不透明像素才能操作飞机,应该如何实现?

最后一次编辑于  2021-11-11
回答关注问题邀请回答
收藏

2 个回答

  • 小柔
    小柔
    发表于小程序端
    2021-11-12

    小游戏大不开怎么办

    2021-11-12
    有用 1
    回复
  • Forever
    Forever
    2021-11-12

    你需要计算出飞机图片的透明与不透明边界之间的所有的坐标点,进行边界判断

    2021-11-12
    有用
    回复 1
    • 叶
      2021-11-12
      感谢回复,之前是因为通过wx.createCanvas不能把图片画出来(画出来所有imageData都是0,后来发现是因为图片没有加载就调用了drawImage,改成onload回调再drawImage就有数据了)
      2021-11-12
      回复
登录 后发表内容