fix(boot) 修复只能向下滚动的问题

This commit is contained in:
wvellichor committed 2026-01-19 02:53:34 +08:00
1 parent 6ca6595127
commit 6dbce8bdd5
5 files changed
+45 -20

No files matched your search

+11 -11
View File
@@ -1,6 +1,3 @@
// 启动场景:用于选择进入不同的测试场景
import GameScene from './GameScene.js';
export default class BootScene extends Phaser.Scene {
constructor() {
super({ key: 'BootScene' });
@@ -36,7 +33,8 @@ export default class BootScene extends Phaser.Scene {
{ key: 'SelectionAndMovementTestScene', name: '测试场景3:单位选择与移动命令' },
{ key: 'TargetMovementTestScene', name: '测试场景2:目标点移动' },
{ key: 'KeyboardMovementTestScene', name: '测试场景1:相对移动(键盘控制)' },
{ key: 'GameScene', name: '返回主游戏场景' }
{ key: 'GameScene', name: '返回主游戏场景' },
{ key: 'MenuScene', name: '返回菜单场景' }
];
// 滚动容器配置
@@ -157,17 +155,19 @@ export default class BootScene extends Phaser.Scene {
this.scrollY = 0;
// 最大滚动位置
this.maxScrollY = contentHeight - containerHeight;
// 容器初始Y位置
const initialContainerY = this.scrollContainer.y;
// 添加鼠标滚轮事件
this.input.on('wheel', (pointer, gameObjects, deltaX, deltaY, deltaZ) => {
// 计算新的滚动位置
// 计算新的滚动位置(向下滚动为正,应该增加 scrollY)
this.scrollY += deltaY * 0.5; // 调整滚动速度
// 限制滚动范围
this.scrollY = Math.max(0, Math.min(this.scrollY, this.maxScrollY));
// 应用滚动
this.scrollContainer.setPosition(this.scrollContainer.x, this.scrollContainer.y - this.scrollContainer.list[0].y + this.scrollY);
// 应用滚动(容器Y = 初始Y - scrollY,确保向下滚动时容器向上移动)
this.scrollContainer.setPosition(this.scrollContainer.x, initialContainerY - this.scrollY);
});
// 添加触摸滚动支持
@@ -183,14 +183,14 @@ export default class BootScene extends Phaser.Scene {
if (isDragging) {
const deltaY = pointer.y - lastY;
// 计算新的滚动位置
this.scrollY -= deltaY * 0.5; // 调整滚动速度
// 计算新的滚动位置(手指向下移动时,应该增加 scrollY)
this.scrollY += deltaY * 0.5; // 调整滚动速度
// 限制滚动范围
this.scrollY = Math.max(0, Math.min(this.scrollY, this.maxScrollY));
// 应用滚动
this.scrollContainer.setPosition(this.scrollContainer.x, this.scrollContainer.y - this.scrollContainer.list[0].y + this.scrollY);
// 应用滚动(容器Y = 初始Y - scrollY)
this.scrollContainer.setPosition(this.scrollContainer.x, initialContainerY - this.scrollY);
lastY = pointer.y;
}