2016-01-25 4 views
-1

Я разрабатываю игру с использованием рамки libgdx. Как я могу достичь действия scene2d в объекте шрифта растрового изображения? так что я могу написать какой-то текст, такой как оценка, сообщение и запустить действие, как актер сцены2d.Как использовать растровый шрифт в качестве сцены 2-го актера?

ответ

0

вы можете расширить класс актера, чтобы достичь того же.

как: -

import com.badlogic.gdx.graphics.Color; 
import com.badlogic.gdx.graphics.g2d.Batch; 
import com.badlogic.gdx.graphics.g2d.BitmapFontCache; 
import com.badlogic.gdx.graphics.g2d.GlyphLayout; 
import com.badlogic.gdx.math.Matrix4; 
import com.badlogic.gdx.scenes.scene2d.Actor; 

public class FontActor extends Actor 
{ 
    private Matrix4 matrix = new Matrix4(); 
    private BitmapFontCache bitmapFontCache; 
    private GlyphLayout glplayout; 

    public FontActor(float posX, float posY, String fontText) 
    { 
    BitmapFont fnt=new BitmapFont(Gdx.files.internal("time_newexport.fnt"), 
        Gdx.files.internal("time_ne-export.png"),false); 

    bitmapFontCache = new BitmapFontCache(fnt); 
    glplayout=bitmapFontCache.setText(fontText, 0, 0); 

    setPosition(posX, posY);  
    setOrigin(glplayout.width/2, -glplayout.height/2); 
} 

    @Override 
    public void draw(Batch batch, float alpha) 
    { 
    Color color = getColor(); 
    bitmapFontCache.setColor(color.r, color.g, color.b, color.a*alpha); 
    matrix.idt(); 
    matrix.translate(getX(), getY(), 0); 
    matrix.rotate(0, 0, 1, getRotation()); 
    matrix.scale(getScaleX(), getScaleY(), 1); 
    matrix.translate(-getOriginX(), -getOriginY(), 0); 
    batch.setTransformMatrix(matrix); 
    bitmapFontCache.draw(batch); 

    } 


    public void setAlpha(int a) 
    { 
    Color color = getColor(); 
    setColor(color.r, color.g, color.b, a); 
    } 

    public void setText(String newFontText) 
    { 
    glplayout = bitmapFontCache.setText(newFontText, 0, 0); 
    setOrigin(glplayout.width/2, -glplayout.height/2); 

    } 

} 

и вы можете использовать его как.

Actor actor=new FontActor(20,30,"test"); 
stage.addActor(actor); 
actor.addAction(Actions.moveTo(10,10,1)); 
+2

спасибо @amitkumar –

3

Посмотрите на Label класса, в частности, конструктор, который принимает CharSequence и LabelStyle. Когда вы инициализируете свой LabelStyle, вы можете предоставить BitmapFont.

Обратите внимание, что если вы хотите повернуть или повернуть этикетку, вам необходимо обернуть ее в Container или добавить ее в Table с включенным setTransform(). (Это сбрасывает SpriteBatch, поэтому используйте его с умом.)

Смежные вопросы