2233@ 发表于 2023-3-20 12:27:51

canvas的点击

本帖最后由 2233@ 于 2023-3-20 12:38 编辑

大家好,想问一下有谁知道canvas里的画面要怎么点击吗,而且是要在手机模式下的触碰才行。
像B站的异想少女这个画面:https://mall.bilibili.com/robotgirl/

李恒道 发表于 2023-3-20 15:01:15

```js
{
            key: "initEvent",
            value: function(e) {
                var t, i = arguments.length > 1 && void 0 !== arguments ? arguments : null;
                this._event._stoped = !1,
                this._event.nativeEvent = i || e,
                this._target = null,
                this._point.setTo(e.pageX || e.clientX, e.pageY || e.clientY),
                this._stage._canvasTransform && (this._stage._canvasTransform.invertTransformPoint(this._point),
                this.mouseX = this._point.x,
                this.mouseY = this._point.y),
                this._event.touchId = e.identifier || 0,
                this._tTouchID = this._event.touchId,
                (t = Mt.I._event)._stoped = !1,
                t.nativeEvent = this._event.nativeEvent,
                t.touchId = this._event.touchId
            }
      }
```
```js
               case "touchcancel":
                  MouseManager._isTouchRespond = !0,
                  this._isLeftMouse = !0;
                  var a = e.changedTouches;
                  for (t = 0,
                  i = a.length; t < i; t++) {
                        if (n = a,
                        MouseManager.multiTouchEnabled || n.identifier == this._curTouchID)
                            this._curTouchID = NaN,
                            this.initEvent(n, e),
                            this._checkAllBaseUI(this.mouseX, this.mouseY, this.onMouseUp) || this.onMouseUp(null)
                  }
                  break;
```
看代码来说是触发事件之后会尝试读取clientX和clientY
其他按常规的事件调用就好了

2233@ 发表于 2023-3-20 16:09:00

var eve =document.createEvent("MouseEvent");
         eve.initMouseEvent("mousedown", true, true, window, 1, 0, 0, 111,222, false, false, false, false, 0, null);
         document.querySelector("#layaCanvas").dispatchEvent(eve);
不太懂,所以是使用这个事件吗,但我返回false@李恒道

2233@ 发表于 2023-3-20 16:29:49

李恒道 发表于 2023-3-20 15:01
```js
{
            key: "initEvent",


抱歉是我傻了,只down没有up才会false,谢谢大佬

李恒道 发表于 2023-3-20 17:45:08

2233@ 发表于 2023-3-20 16:29
抱歉是我傻了,只down没有up才会false,谢谢大佬

哥哥搞定了吗

2233@ 发表于 2023-3-20 18:21:55

李恒道 发表于 2023-3-20 17:45
哥哥搞定了吗

哥哥搞定了,这个initMouseEvent在油猴被弃用了只能用在控制台,有其他的吗
         eve.initMouseEvent("mouseup", true, true, window, 1, 0, 0, 369,574 ,false, false, false, false, 0, null);

李恒道 发表于 2023-3-20 18:27:16

2233@ 发表于 2023-3-20 18:21
哥哥搞定了,这个initMouseEvent在油猴被弃用了只能用在控制台,有其他的吗
         eve.initMouseEvent ...

我个人是喜欢new Event之后dispatch进去

2233@ 发表于 2023-3-20 18:41:48

李恒道 发表于 2023-3-20 17:45
哥哥搞定了吗

我换成这种event = new MouseEvent('mouseup', {
    'cancelBubble': true,
    'cancelable': true,
    "clientX":543,
    "clientY":568,view:window,detail:1
}),不知道为什么不行

2233@ 发表于 2023-3-20 19:08:08

李恒道 发表于 2023-3-20 18:27
我个人是喜欢new Event之后dispatch进去

可以了哥哥,不知道刚才哪里写错了,现在可以了,这个币要怎么给你呀

李恒道 发表于 2023-3-20 19:14:50

2233@ 发表于 2023-3-20 19:08
可以了哥哥,不知道刚才哪里写错了,现在可以了,这个币要怎么给你呀

我也不知道
没事
哥哥好好学
也可以尝试解答一下其他人的问题~
页: [1] 2
查看完整版本: canvas的点击