0

这就是我调用方法的方式:

initButton(0, 0, 150, 50, "button.png", "PNG");

这是方法:

private void initButton(float x, float y, float width, float height, String imageFileName, String imageFileType) {
    buttonImages.add(loadResClass.loadTextures(imageFileType, imageFileName));
    buttonFloats.add(new Vector4f(x, y, width, height));
    float mouseX = Mouse.getX();
    float mouseY = Mouse.getY() - Display.getHeight();
    if(mouseY < 0){
        mouseY = mouseY * -1;
    }

    if(mouseX > x && mouseY > y && mouseX < x+width && mouseY < y+height){ 
        //do something
    }
}

在调用 initButton 时,我想将一些代码设置为参数(或做类似的事情),而不是将代码放在 initButton 方法中而不是//do something注释中。

4

2 回答 2

1

您可以使用策略模式在运行时配置某些行为。该方法将策略对象作为参数。例如:

private void initButton(float x, float y, float width, float height, String imageFileName, String imageFileType, Strategy strategy) {
    // ...

    if(mouseX > x && mouseY > y && mouseX < x+width && mouseY < y+height){ 
        strategy.doWork();
    }
}

并像这样调用:

initButton(0, 0, 150, 50, "button.png", "PNG", new SpecificStrategy());
于 2012-05-20T14:24:08.783 回答
0

如果是 Swing,你可以传入一个 ActionListener 或者更好的是一个 AbstractAction。如果是其他 GUI 库,则传入 Runnable、Future 或其他允许您注入代码的接口。

这是什么图书馆?

编辑 1
您声明:

我没有使用任何 gui 库。

但你肯定是,无论是 Swing,还是 Android,或类似的,否则你怎么能与用户交互呢?

编辑 2
你说:

我没有使用任何 GUI 库。我用 LWJGL 画四边形

那么也许你想Runnable在这种情况下使用 a 。虽然我不确定你将如何听鼠标位置......

于 2012-05-20T14:16:47.987 回答