Interpolation¶
Enne interpolation
-ist rääkimist peab mõistma interpolation``i seosest ``Action
-iga, Action
-i seost Actor
-iga ning Actor
-i seost Stage
-iga.
Actor ja Action¶
Kõik Stage
-i (ja HUD
-i) elemendid on esindatud Actor
-itena. Actor
-id võivad olla staatilised (näiteks nupud) või dünaamilised kasutades Action
-it. Action
-id võivad panna Actor
-id liikuma, muuta nende läbipaistvust või hoopis suurust.
Interpolatsion¶
Interpolation
on matemaatiline funktsioon, mis määrab, kuidas väärtused ajas muutuvad. Interpolation
-iga saab nii staatilistele Actor
-itele dünaamilisust anda kui ka dünaamiliste Actor
-ite lineaarsetele meetoditele varieeruvust lisada.
Interpolation
klassis on üle 40 meetodi, millega saab muuta nii hüppamise füüsikat, kaamera liikumist kui ka rõhutada objekte.
Näiteid Interpolation meetodite rakendusviisidest:¶
Interpolation.Bounce
: Müntide üles-alla põrkumine.Interpolation.Circle
: Kaamera sujuv liikumine (tegelane pöörab ringi enne liikumist, auto liikumine kurvis).Interpolation.Swing
: Tegelase "sammumine" kohapeal.Interpolation.Fade
: Lõpp ekraani ilmumine või teleportatsioon.Interpolation.Elastic
: Peale hüppamist väikese “võnke” andmine tegelasele.Interpolation.Pow2Out
: Kiire algus ja sujuv lõpp (kaamera aeglustuv liikumine pidurdava auto puhul).Interpolation.Exp
: Järsk kiirendus (tegelase sprintimine, raketi start).Interpolation.Sine
: Sujuv edasi-tagasi liikumine (paatidele vee peal või tegelase hingamine).Interpolation.Smooth
: Menüü avamine ja sulgemine, stseenivahetus.
Parimad Actionite ja Interpolationite kombinatsioonid¶
Actions.moveTo(x, y, duration, interpolation)
ehk liikumine kindlale koordinaadile.
Exp5Out
,Exp10Out
: kiirenev või pidurdav liikumineBounceOut
: põrkumine maandudesSwing
: sujuv kõikumine edasi-tagasiElasticOut
: venivCircleOut
: pehme pidurdus
Actions.moveBy(x, y, duration, interpolation)
ehk liikumine kindlale kaugusele.
Sine
,Swing
: edasi-tagasi liikuminePow2Out
,Pow3Out
:hüppe-, plahvatuse-laadiElasticOut
: venivExp5Out
,Exp10Out
: kiirenev liikumine
Actions.fadeOut(duration, interpolation)
läbipaistvus muutus nähtamatuks.
Smooth
,Smooth2
,Smoother
: pehme fadeExpOut
,Pow2Out
: kiire fade-out
Actions.fadeIn(duration, interpolation)
läbipaistvus muutus nähtavaks.
Smooth
,Smoother
: pehme fade-inExpIn
,Pow2In
: kiire fade-inElasticOut
: veniv
Actions.scaleTo(xScale, yScale, duration, interpolation)
suuruse muutus.
ElasticOut
: venivPow2Out
,Exp10Out
: kiire suurenemineSmooth
,Linear
: pehme suurenemine
Actions.rotateBy(degrees, duration, interpolation)
pööramine kraadides.
Circle
,CircleOut
: sujuv pöörlemineSwing
,Sine
: pendeldamineElasticOut
: veniv pöörlemine
Koodinäide Interpolation.bounce kasutamisest¶
Kõigepealt loome peamise mängu klassi, et hiljem oleks hea täiendada Skin
-ide, TextureAtlas
´tega.
public class MyGDXGame extends Game {
@Override
public void create () {
this.setScreen(new GameScreen(this));
}
@Override
public void render () {
super.render();
}
}
Seejärel loome Screen
klassi laiendava klassi, kus loome uue Stage
-i ning lisame Stage
-ile Soda
Actor
-i. Soda
paneme 5-sekundiga liikuma uuele x- ja y-koordinaadile.
Impordime staatiliselt Action
-i import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*;
, et ei peaks Action.moveTo
koodi kirjutama.
public class GameScreen implements Screen {
private final Stage stage;
public GameScreen(Game game) {
stage = new Stage(new ScreenViewport());
Soda coca = new Soda();
stage.addActor(coca);
coca.addAction(moveTo(stage.getWidth() - coca.getWidth(), stage.getHeight() / 2, 5f, Interpolation.bounce));
}
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
}
Teeme selged kaustad.

Meie Actor
on Image
ning pilt soda.png
asub assets
kaustas.
public class Soda extends Image {
public Soda() {
super(new Texture("soda.png"));
}
@Override
public void draw(Batch batch, float initialPosition) {
super.draw(batch, initialPosition);
}
@Override
public void act(float deltaTime) {
super.act(deltaTime);
}
}
Tulemus:
