优化事件总线

This commit is contained in:
zqm
2025-12-15 09:03:32 +08:00
parent 7d92e0b6b1
commit 4ca836df37
7 changed files with 237 additions and 157 deletions

View File

@@ -1189,8 +1189,10 @@ class DragStateManager {
});
// 设置起始位置
const startX = position.x || event.clientX;
const startY = position.y || event.clientY;
const clientX = event?.clientX || eventData.clientX;
const clientY = event?.clientY || eventData.clientY;
const startX = position.x || clientX;
const startY = position.y || clientY;
dragState.startPosition = { x: startX, y: startY };
dragState.updatePosition(startX, startY);
@@ -1250,8 +1252,10 @@ class DragStateManager {
}
// 更新位置
const currentX = position.x || event.clientX;
const currentY = position.y || event.clientY;
const clientX = event?.clientX || eventData.clientX;
const clientY = event?.clientY || eventData.clientY;
const currentX = position.x || clientX;
const currentY = position.y || clientY;
dragState.updatePosition(currentX, currentY);
// 检测目标区域
@@ -1308,8 +1312,10 @@ class DragStateManager {
const dragState = activeDrag.dragState;
// 更新最终位置
const finalX = finalPosition.x || event.clientX;
const finalY = finalPosition.y || event.clientY;
const clientX = event?.clientX || eventData.clientX;
const clientY = event?.clientY || eventData.clientY;
const finalX = finalPosition.x || clientX;
const finalY = finalPosition.y || clientY;
dragState.updatePosition(finalX, finalY);
// 设置最终状态
@@ -1578,6 +1584,12 @@ class DragStateManager {
// 这里可以实现具体的拖拽目标检测逻辑
// 例如:检测鼠标下的元素类型和区域
// 验证坐标是否为有限值避免elementFromPoint抛出错误
if (!Number.isFinite(x) || !Number.isFinite(y)) {
console.warn('检测拖拽目标时坐标无效:', { x, y });
return null;
}
// 简化实现:检查坐标是否在预设区域内
const targetAreas = ['main-area', 'floating-area', 'hidden-area'];
const detectedArea = targetAreas[Math.floor(Math.random() * targetAreas.length)];