使用Input监听TOUCH_MOVE,改变节点位置,但是快速移动时,会有明显延迟。
圆圈是触摸点,黑线是用Android原生画的线,原生最大有1帧延迟,竖线是cocos端根据touch_move移动的节点,明显有两三帧率的延迟
慢放5倍看的更清楚
代码:
private start() {
input.on(Input.EventType.TOUCH_START, this.onTouchStart, this);
input.on(Input.EventType.TOUCH_MOVE, this.onTouchMove, this);
input.on(Input.EventType.TOUCH_END, this.onTouchEnd, this);
input.on(Input.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
}
onTouchStart(event:EventTouch) {
let uILocationPos: Vec2 = event.getUILocation();
let pos = this.node.getComponent(UITransform).convertToNodeSpaceAR(new Vec3(uILocationPos.x, uILocationPos.y, 0));
this.node.setPosition(pos.x, this.node.getPosition().y);
}
onTouchMove(event:EventTouch) {
let uILocationPos: Vec2 = event.getUILocation();
let pos = this.node.getComponent(UITransform).convertToNodeSpaceAR(new Vec3(uILocationPos.x, uILocationPos.y, 0));
this.node.setPosition(pos.x, this.node.getPosition().y);
}