const { ccclass, property } = cc._decorator;
@ccclass
export default class Drag extends cc.Component {
_isTouched: boolean = false;
_parentNode: cc.Node = null;
// onLoad () {
// }
start() {
this.node.on("touchstart", this.onTouchStart, this);
this.node.on("touchmove", this.onTouchMove, this);
this.node.on("touchend", this.onTouchEnd, this);
this.node.on("touchcancel", this.onTouchEnd, this);
this._parentNode = this.node.parent;
}
private onTouchStart(evt: cc.Event.EventTouch) {
this._isTouched = true;
let pos = this.getWorldPos();
let canvas = cc.find("/Canvas");
this.node.setParent(canvas);
this.setWorldPos(pos);
}
private onTouchMove(evt: cc.Event.EventTouch) {
if (this._isTouched) {
this.node.setPosition(this.node.x + evt.getDeltaX(), this.node.y + evt.getDeltaY());
}
}
private onTouchEnd(evt: TouchEvent) {
this._isTouched = false;
let pos = this.getWorldPos();
this.node.setParent(this._parentNode);
this.setWorldPos(pos);
}
private getWorldPos(): cc.Vec3 {
return this.node.convertToWorldSpaceAR(cc.Vec3.ZERO);
}
private setWorldPos(pos: cc.Vec3) {
this.node.position = this.node.parent.convertToNodeSpaceAR(pos);
}
// update (dt) {}
}
Cocos Creator 拖拽脚本
最新推荐文章于 2024-05-29 16:14:31 发布