ScrollWheelHandler.java

net.minecraft.client.ScrollWheelHandler

信息

  • 全限定名:net.minecraft.client.ScrollWheelHandler
  • 类型:public class
  • 包:net.minecraft.client
  • 源码路径:src/main/java/net/minecraft/client/ScrollWheelHandler.java
  • 起始行号:L8
  • 职责:

    TODO

字段/常量

  • accumulatedScrollX

    • 类型: double
    • 修饰符: private
    • 源码定位: L9
    • 说明:

      TODO

  • accumulatedScrollY

    • 类型: double
    • 修饰符: private
    • 源码定位: L10
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public Vector2i onMouseScroll(double scaledXScrollOffset, double scaledYScrollOffset) @ L12

  • 方法名:onMouseScroll
  • 源码定位:L12
  • 返回类型:Vector2i
  • 修饰符:public

参数:

  • scaledXScrollOffset: double
  • scaledYScrollOffset: double

说明:

TODO

public static int getNextScrollWheelSelection(double wheel, int currentSelected, int limit) @ L34

  • 方法名:getNextScrollWheelSelection
  • 源码定位:L34
  • 返回类型:int
  • 修饰符:public static

参数:

  • wheel: double
  • currentSelected: int
  • limit: int

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class ScrollWheelHandler {
    private double accumulatedScrollX;
    private double accumulatedScrollY;
 
    public Vector2i onMouseScroll(double scaledXScrollOffset, double scaledYScrollOffset) {
        if (this.accumulatedScrollX != 0.0 && Math.signum(scaledXScrollOffset) != Math.signum(this.accumulatedScrollX)) {
            this.accumulatedScrollX = 0.0;
        }
 
        if (this.accumulatedScrollY != 0.0 && Math.signum(scaledYScrollOffset) != Math.signum(this.accumulatedScrollY)) {
            this.accumulatedScrollY = 0.0;
        }
 
        this.accumulatedScrollX += scaledXScrollOffset;
        this.accumulatedScrollY += scaledYScrollOffset;
        int wheelX = (int)this.accumulatedScrollX;
        int wheelY = (int)this.accumulatedScrollY;
        if (wheelX == 0 && wheelY == 0) {
            return new Vector2i(0, 0);
        } else {
            this.accumulatedScrollX -= wheelX;
            this.accumulatedScrollY -= wheelY;
            return new Vector2i(wheelX, wheelY);
        }
    }
 
    public static int getNextScrollWheelSelection(double wheel, int currentSelected, int limit) {
        int step = (int)Math.signum(wheel);
        currentSelected -= step;
        currentSelected = Math.max(-1, currentSelected);
 
        while (currentSelected < 0) {
            currentSelected += limit;
        }
 
        while (currentSelected >= limit) {
            currentSelected -= limit;
        }
 
        return currentSelected;
    }
}

引用的其他类