import Camera = Laya.Camera;
import Scene3D = Laya.Scene3D;
import Event = Laya.Event;
import Sprite = Laya.Sprite;
import Ray = Laya.Ray;
import HitResult = Laya.HitResult;
import MeshRenderer = Laya.MeshRenderer;
import Vector3 = Laya.Vector3;
import Sprite3D = Laya.Sprite3D;
export class MyDrawLine extends Laya.Script {
private scene: Scene3D;
private camera: Camera;
private sp: Sprite;
private lastMouseDownX: number = 0;
private lastMouseDownY: number = 0;
private lastMouseUpX: number = 0;
private lastMouseUpY: number = 0;
private isMouseDown: boolean = false;
private point: Laya.Vector2 = new Laya.Vector2(0, 0);
onAwake(): void {
// 绑定脚本
this.scene = this.owner as Scene3D;
this.camera = this.owner.getChildByName("Main Camera") as Camera;
// 创建
this.sp = this.scene.parent.addChild(new Laya.Sprite());
}
onEnable() {
Laya.stage.on(Event.MOUSE_DOWN, this, this.mouseDown);
Laya.stage.on(Event.MOUSE_UP, this, this.mouseUp);
Laya.stage.on(Event.MOUSE_MOVE, this, this.mouseMove);
}
onDisable() {
Laya.stage.off(Event.MOUSE_DOWN, this, this.mouseDown);
Laya.stage.off(Event.MOUSE_UP, this, this.mouseUp);
Laya.stage.off(Event.MOUSE_MOVE, this, this.mouseMove);
}
mouseDown(e: any): void {
console.log("DrawLine 按下", Laya.stage.mouseX, Laya.stage.mouseY, e);
this.lastMouseDownX = Laya.stage.mouseX;
this.lastMouseDownY = Laya.stage.mouseY;
// 移动
let touch = Laya.InputManager.touches[0];
this.point.x = touch.pos.x;
this.point.y = touch.pos.y;
//设置bool值
this.isMouseDown = true;
}
mouseMove(e: any) {
if (this.isMouseDown) {
this.lastMouseUpX = Laya.stage.mouseX;
this.lastMouseUpY = Laya.stage.mouseY;
this.drawSomething();
}
}
mouseUp(e: any): void {
console.log("DrawLine 抬起", Laya.stage.mouseX, Laya.stage.mouseY);
this.lastMouseUpX = Laya.stage.mouseX;
this.lastMouseUpY = Laya.stage.mouseY;
}
drawSomething(): void {
this.spriteClear();
let w = this.lastMouseUpX - this.lastMouseDownX;
let h = this.lastMouseUpY - this.lastMouseDownY;
let x = this.lastMouseDownX;
let y = this.lastMouseDownY;
this.sp.graphics.drawRect(x, y, w, h, "rgba(255,255,255,0)", "#ffff00");
}
spriteClear() {
this.sp.graphics.clear();
}
}
this.scene.addComponent(MyDrawLine);