I managed to create a text from .*ttf and now i have a BitmapFont object. I want to use it as an Actor. In Actor`s method draw() i used:
FontRed.draw(batch, "Some text!", getX(), getY());
A text was displayed, but a Listener did not work. When i tried to take a region from BitmapFont:
batch.draw(FontRed.getRegion(), getX(), getY(), getWidth(), getHeight());
i saw a lot of strange symbols instead of my text on the screen, but my listener worked.
I think it is closely connected with that fact, that spritebatch is sent in method draw() of the BitmapFont. This is my full code:
public class Text extends Actor {
private BitmapFont FontRed;
private FreeTypeFontGenerator generator;
FreeTypeFontParameter parameter;
String FONT_CHARS = "";
public Text(GameStateManager gsm){
generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/myfont.ttf"));
for( int i = 32; i < 127; i++ ) FONT_CHARS += (char)i;
for( int i = 1024; i < 1104; i++ ) FONT_CHARS += (char)i;
parameter = new FreeTypeFontParameter();
parameter.characters = FONT_CHARS;
parameter.size = 82;
parameter.color= Color.RED;
FontRed = generator.generateFont(parameter);
generator.dispose();
setPosition(30, 300);
setSize(182, 182);
this.addListener(new Listener(gsm));
}
@Override
public void draw(Batch batch, float parentAlpha) {
FontRed.draw(batch, "Some text!", getX(), getY());
// batch.draw(FontRed.getRegion(), getX(), getY(), getWidth(), getHeight());
}
@Override
public void act(float delta) {
}
class Listener extends InputListener {
GameStateManager gsm;
Listener(GameStateManager gsm){
this.gsm = gsm;
}
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
event.getListenerActor().setColor(Color.GREEN);
System.out.println("it works");
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
gsm.push(new PlayState(gsm));
}
}
}
So please explain me why the listner in Actor doesn't work when spritebatch is sent in BitmapFont's method draw() and how can i make a texture from BitmapFont for using it in batch.draw()?
System.out.println("it works");
doesn't work when i drawFontRed.draw(batch, "Some text!", getX(), getY());
But when i drawbatch.draw(FontRed.getRegion(), getX(), getY(), getWidth(), getHeight());
i see stupid symbols instead of my text but listener works. You say they have no relation. But what to do? Please, help me. – Daniil Andashev