[add] Engine
This commit is contained in:
58
assets/Script/Engine/Component/Node/DropItem.ts
Normal file
58
assets/Script/Engine/Component/Node/DropItem.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
const { ccclass, property } = cc._decorator;
|
||||
|
||||
/** 物品拖動 */
|
||||
@ccclass
|
||||
export default class DragItem extends cc.Component {
|
||||
//#region Lifecycle
|
||||
|
||||
protected onLoad(): void {
|
||||
// 獲取小節點
|
||||
let carNode: cc.Node = this.node;
|
||||
// 新增變數判斷使用者當前滑鼠是不是處於按下狀態
|
||||
let mouseDown: boolean = false;
|
||||
// 當使用者點選的時候記錄滑鼠點選狀態
|
||||
carNode.on(cc.Node.EventType.MOUSE_DOWN, (event) => {
|
||||
mouseDown = true;
|
||||
});
|
||||
// 只有當使用者滑鼠按下才能拖拽
|
||||
carNode.on(cc.Node.EventType.MOUSE_MOVE, (event) => {
|
||||
if (!mouseDown) { return; }
|
||||
// 獲取滑鼠距離上一次點的資訊
|
||||
let delta: any = event.getDelta();
|
||||
let canvasNode: cc.Node = cc.Canvas.instance.node;
|
||||
// 增加限定條件
|
||||
let minX: number = -canvasNode.width / 2 + carNode.width / 2;
|
||||
let maxX: number = canvasNode.width / 2 - carNode.width / 2;
|
||||
let minY: number = -canvasNode.height / 2 + carNode.height / 2;
|
||||
let maxY: number = canvasNode.height / 2 - carNode.height / 2;
|
||||
let moveX: number = carNode.x + delta.x;
|
||||
let moveY: number = carNode.y + delta.y;
|
||||
// 控制移動範圍
|
||||
if (moveX < minX) {
|
||||
moveX = minX;
|
||||
} else if (moveX > maxX) {
|
||||
moveX = maxX;
|
||||
}
|
||||
if (moveY < minY) {
|
||||
moveY = minY;
|
||||
} else if (moveY > maxY) {
|
||||
moveY = maxY;
|
||||
}
|
||||
// 移動小車節點
|
||||
carNode.x = moveX;
|
||||
carNode.y = moveY;
|
||||
});
|
||||
// 當滑鼠抬起的時候恢復狀態
|
||||
carNode.on(cc.Node.EventType.MOUSE_UP, (event) => {
|
||||
mouseDown = false;
|
||||
});
|
||||
carNode.on(cc.Node.EventType.TOUCH_END, (event) => {
|
||||
mouseDown = false;
|
||||
});
|
||||
carNode.on(cc.Node.EventType.TOUCH_CANCEL, (event) => {
|
||||
mouseDown = false;
|
||||
});
|
||||
}
|
||||
|
||||
//#endregion
|
||||
}
|
10
assets/Script/Engine/Component/Node/DropItem.ts.meta
Normal file
10
assets/Script/Engine/Component/Node/DropItem.ts.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"ver": "1.1.0",
|
||||
"uuid": "af74a109-396e-4192-bcac-70e8b050f9e6",
|
||||
"importer": "typescript",
|
||||
"isPlugin": false,
|
||||
"loadPluginInWeb": true,
|
||||
"loadPluginInNative": true,
|
||||
"loadPluginInEditor": false,
|
||||
"subMetas": {}
|
||||
}
|
Reference in New Issue
Block a user