0

我正在尝试通过扩展 AbstractComponent 来制作光滑的按钮:

公共类 StandardButton 扩展 AbstractComponent {

protected int x;
protected int y;
protected int Width;
protected int Height;
protected String Text;

public StandardButton(GUIContext container,int x, int y, String Text, int Width, int Height,ComponentListener listener) {
    super(container);
    this.Text=Text;
    setLocation(x, y);
    this.Width=Width;
    this.Height=Height;
    addListener(listener);



}

@Override 
public void render(GUIContext container, Graphics g) throws SlickException {
    g.setColor(Color.white);
    g.setLineWidth(2f);
    g.drawRect(x, y, Width, Height);
    g.drawString(Text, x+5, y+(Height/2-4));

}
 [...]

在我的状态下:

公共类 UpdaterState 扩展 BasicGameState 实现 ComponentListener { private StandardButton buttonPlay;

@Override
public void init(GameContainer container, final StateBasedGame game)
        throws SlickException {
        buttonPlay=new StandardButton(container,100,100,"Graj",60,30,new ComponentListener(){

            @Override
            public void componentActivated(AbstractComponent source) {
                State.nextState(0, game);

            }

        });

但什么也没有发生。当我单击按钮时,我的 nestState 方法没有运行。我应该如何正确地做到这一点?我只想让我的程序在 componentActivated 方法中进行阻塞。这可能吗,或者我只需要检查鼠标是否一直在更新方法中的按钮字段上释放所有按钮?

4

1 回答 1

0

我建议您快速浏览一下 buckys 视频,这些视频会为您提供有关使用 slick 2d 制作东西的有用提示。

http://www.youtube.com/watch?v=AXNDBQfCd08&feature=share&list=PL22EF3E3752768216

这是他教程播放列表的链接。其中一个视频谈到了制作按钮和切换状态。祝你好运,我希望你能做出一个很棒的程序:)

于 2013-08-02T11:42:31.120 回答