调用方法时将代码设置为属性

时间:2012-05-20 14:14:46

标签: java lwjgl

这就是我称之为方法的方式:

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注释中。

2 个答案:

答案 0 :(得分:1)

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

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());

答案 1 :(得分:0)

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

这是为了什么库?

编辑1
你说:

  

我没有使用任何gui库。

但你肯定是,无论是Swing,还是Android,或者其他什么,否则你如何与用户互动?

编辑2
你说:

  

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

那么也许你想在这种情况下使用Runnable。虽然我不确定你会怎么听老鼠的位置......