DragTarget.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { Component, EventHandler, EventTouch, _decorator } from "cc";
  2. import { DragSource } from "./DragSource";
  3. import { DragSystem } from "./DragSystem";
  4. const { ccclass, property } = _decorator;
  5. /**
  6. * 可以释放拖拽的组件
  7. * @description 当拖拽的物体被放下时,会传递DragSource
  8. * @author 袁浩
  9. */
  10. @ccclass("DragTarget")
  11. export class DragTarget extends Component {
  12. @property({ tooltip: "所属分组" })
  13. public group: string = "group";
  14. @property({ tooltip: "当拖拽放下", type: EventHandler })
  15. public onDrop: EventHandler[] = [];
  16. @property({ tooltip: "当拖拽中", type: EventHandler })
  17. public onDraging: EventHandler[] = [];
  18. start() {
  19. DragSystem.addTarget(this);
  20. }
  21. onDestroy() {
  22. DragSystem.removeTarget(this);
  23. }
  24. public draging(source: DragSource, inTarget: boolean, event: EventTouch) {
  25. for (let i = 0; i < this.onDraging.length; i++) {
  26. this.onDraging[i] && this.onDraging[i].emit([source, inTarget, this, event]);
  27. }
  28. }
  29. public drop(source: DragSource, event: EventTouch) {
  30. for (let i = 0; i < this.onDrop.length; i++) {
  31. this.onDrop[i] && this.onDrop[i].emit([source, this, event]);
  32. }
  33. }
  34. }