cocos creator3.7版本拖拽事件处理

前言:网上能找到的资料都太落后了,导致哥们用AI去写,全是瞎B写,版本都不对。贴点实际有用的。别老捣鼓你那破convertToNodeSpaceAR或者convertToNodeSpace了。

核心代码

touch.getDeltaX()
touch.getDeltaY()
在这里插入图片描述

在cocoscreator3.7版本中通过这个方法,修改节点坐标就可以了。

import { _decorator, Button, Component, EventTouch, Node, systemEvent, UITransform, Vec2, Vec3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('LockManager')
export class LockManager extends Component {
    @property(Node)
    public dragNode: Node = null; // 假设这是您想要拖拽的 Sprite 所在的节点

    @property(Node)
    public transformNode: Node = null; // 假设这是您想要移动的node节点

    private _isDragging = false;

    start() {
        if (this.dragNode) {
            this.dragNode.on(Node.EventType.TOUCH_START, this.onTouchStart, this);
            this.dragNode.on(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
            this.dragNode.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);
            this.dragNode.on(Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
        }
    }

    onTouchStart(touch: EventTouch) {
        this._isDragging = true;
    }

    onTouchMove(touch: EventTouch) {
        if (!this._isDragging) return;
        // 更新节点的y坐标
        const originPos = this.transformNode.getPosition()
        originPos.y += touch.getDeltaY();
        this.transformNode.setPosition(originPos)
    }

    onTouchEnd(touch: EventTouch) {
        this._isDragging = false;
        // 可以在这里添加拖拽结束后的逻辑
    }

    onTouchCancel(touch: EventTouch) {
        this._isDragging = false;
        // 可以在这里添加触摸被取消的逻辑
    }

    onDestroy() {
        if (this.dragNode) {
            this.dragNode.off(Node.EventType.TOUCH_START, this.onTouchStart, this);
            this.dragNode.off(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
            this.dragNode.off(Node.EventType.TOUCH_END, this.onTouchEnd, this);
            this.dragNode.off(Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
        }
    }
}



相关推荐

  1. vue中的事件

    2024-06-09 05:34:02       58 阅读
  2. qt事件重写

    2024-06-09 05:34:02       39 阅读
  3. js实现快速(定时器版本

    2024-06-09 05:34:02       34 阅读
  4. Slider重写 添加开始,结束以及点击事件

    2024-06-09 05:34:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 05:34:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 05:34:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 05:34:02       87 阅读
  4. Python语言-面向对象

    2024-06-09 05:34:02       96 阅读

热门阅读

  1. 素数幂变换问题

    2024-06-09 05:34:02       25 阅读
  2. html前端怎么赚钱:探索多元盈利途径

    2024-06-09 05:34:02       26 阅读
  3. 1、项目介绍:为什么要做此项目。

    2024-06-09 05:34:02       28 阅读
  4. ssh远程管理和密钥和yum源

    2024-06-09 05:34:02       27 阅读
  5. 动态规划学习

    2024-06-09 05:34:02       31 阅读
  6. 单片机毕业设计论文都些什么,章节规划

    2024-06-09 05:34:02       33 阅读
  7. leetcode-01-[704]二分查找[27]移除元素

    2024-06-09 05:34:02       38 阅读
  8. Leetcode:有效的括号

    2024-06-09 05:34:02       32 阅读
  9. 深入解析Kafka消息丢失的原因与解决方案

    2024-06-09 05:34:02       30 阅读
  10. 大模型日报2024-06-08

    2024-06-09 05:34:02       35 阅读
  11. v-model的工作原理是什么

    2024-06-09 05:34:02       28 阅读