0

クリーンな BasicGame で TextField をテストしたところ、うまくいきました。(境界線が表示され、入力できます。)

コード:

            TextField lanText;  
            TrueTypeFont font;

            public void init(........)
        {
            font = new TrueTypeFont(new java.awt.Font(java.awt.Font.SERIF,java.awt.Font.BOLD,8),false);
            lanText = new TextField(gc, font, 50, 100, 350, 25);

}

    public void render(.....)
        {  
            lanText.render(gc, g);
        }

しかし、私のゲームで BasicGameState を試してみると、うまくいきません。どうしたの?(境界線は見えますが、入力できません)

私は4つの州を持っています。メニュー 0. ゲーム 1. コープ 2. オプション 3.

状態 2(Coop) に追加しようとしています。

public class Game
extends StateBasedGame
{
    public final int menu = 0;
    public final int game = 1;
    public final int option = 2;
    public final int coop = 3;

    public Game(String gamename)
    {
        super(gamename);
        this.addState(new Menu(menu));
        this.addState(new Game(game));
        this.addState(new Option(option));
        this.addState(new Coop(coop));
    }

public void initStatesList(GameContainer gc)
    throws SlickException
    {
    this.getState(menu).init(gc, this);
    this.getState(game).init(gc, this);
    this.getState(option).init(gc, this);
    this.getState(coop).init(gc, this);
    this.enterState(menu);
}
}
4

1 に答える 1

0

わかりました、わかりました。これは、同じ問題を抱えている人のためのコードです。

import java.awt.Font;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.UnicodeFont;
import org.newdawn.slick.font.effects.ColorEffect;
import org.newdawn.slick.gui.ComponentListener;
import org.newdawn.slick.gui.TextField;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;

public class Coop
        extends BasicGameState
{
    TextField text;
    UnicodeFont font;

    public Coop(int state)
    {
    }

    public void init(GameContainer gc , StateBasedGame sbg)
            throws SlickException
    {
        font = getNewFont("Arial" , 16);
    }

    public void render(GameContainer gc , StateBasedGame sbg , Graphics g)
            throws SlickException
    {
        text.render(gc , g);
        g.setFont(font);
    }

    public void update(GameContainer gc , StateBasedGame sbg , int delta)
            throws SlickException
    {
        font.loadGlyphs();
    }

    public int getID()
    {
        return 3;
    }

    public void enter(GameContainer gc , StateBasedGame sbg)
            throws SlickException
    {
        text = new TextField(gc , font , 150 , 270 , 200 , 35);
    }

    public UnicodeFont getNewFont(String fontName , int fontSize)
    {
        font = new UnicodeFont(new Font(fontName , Font.PLAIN , fontSize));
        font.addGlyphs("@");
        font.getEffects().add(new ColorEffect(java.awt.Color.white));
        return (font);
    }
}

font.loadGlyphs();を使用する必要がある理由がわかりません。しかし、それがなければ、それは機能しません。

于 2013-01-18T13:01:55.597 に答える