Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

Animierte Backgrounds im main menu

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
26
Points
0
ich wollte fragen wie man animierte backgrounds im mainmenu machen kann

Beispiel:
 
Entweder renderst du eine GIF (kannst genauso mehrere bilder hintereinander abspielen lassen was aber mehr kb - mb verbrauchen wird) oder nimmst den JavaFX MediaPlayer
 
bsp.
Image gif;
File f = new File("C:\\Deine Gif.gif");
try
{
gif = ImageIO.read(f);
//wird hiernach gerendet z.B so: g.drawImage(gif, 88, 88, null);
}
catch (IOException e)
{
e.printStackTrace();
}
 
eine (schlechte) möglichkeit wäre jeden einzelnen frame des videos als bild abzuspeichern
und sie zb "vid0,vid1,vid2,vid3,vid4...." zu nennen
im client lässt du 60 mal die sekunde einen int hochzählen
und hängst den int an die resourcelocation an
(new ResourceLocation("(backgroundfolder/vid+int)")
danach einfach die normale drawmethode
(ich bin mir btw nicht sicher ob es gehen würde oder ob mc das packen würde)
 
Das GIF Format halte ich für nicht besonders sinnvoll, da man unter normalen Umständen (es existieren auch Umwege) nur 256 Farben verwenden kann.
Möglich wäre auch ein einziges PNG Bild (Spritesheets).
Das MNG Format könnte auch eine Lösung sein.

Wenn du trotzdem GIFs verwenden willst habe ich hier eine mögliche Lösung.
[HIDE]https://gist.github.com/ImFr0zen/4460a11045625ecab6113a51aa2e93f3[/HIDE]
(Ja, dieses mal poste ich sogar Code)

evtl. Graphics2D
Man könnte auch Slick2D in Betracht ziehen, allerdings wäre es da auch möglich, einfach nur das 'null' Argument zu entfernen.
File f = new File("C:\\Deine Gif.gif");
Das sollte schon eine sinnvolle Stelle sein.
 
Last edited by a moderator:
Code:
try {
    GIF bg = new GIF(getClass().getClassLoader().getResourceAsStream("assets/minecraft/Client/gif.gif"));
} catch (Exception ex) {
    ex.printStackTrace();
}
 
Code:
try {
    GIF bg = new GIF(getClass().getClassLoader().getResourceAsStream("assets/minecraft/Client/gif.gif"));
} catch (Exception ex) {
    ex.printStackTrace();
}
Ich würde im Falle von Minecraft lieber den eingebauten Ressourcenpaketen die Arbeit überlassen.
 
Code:
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
        FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
        ScaledResolution s1 = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
        try {
            GIF bg = new GIF(getClass().getClassLoader().getResourceAsStream("assets/minecraft/Client/gif.gif"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        Gui.drawModalRectWithCustomSizedTexture(0, 0, 0, 0, s1.getScaledWidth(), s1.getScaledHeight(), s1.getScaledWidth(), s1.getScaledHeight());
        drawRect(0, s1.getScaledHeight() / 10 - 60, s1.getScaledWidth() / 2 - 280, s1.getScaledHeight() + 10, -1728053248);
        super.drawScreen(mouseX, mouseY, partialTicks);
    }
Dann ist ja klar, dass es nicht funktioniert.
  1. Du lädst das Bild so oft, wie insgesamt gerendert wird. (Meistens 60 mal die Sekunde)
  2. Du lädst es einfach nur, ohne etwas mit dem zu machen.
  3. Du renderst das zuletzt verwendete Bild noch einmal und das über das gesamte Fenster.
  4. Du verwendest den gleichen Pfad, wie vorhin gezeigt.
Kannst du bitte lernen, was der Code überhaupt macht und wie man solchen schreibt?
 
Dann ist ja klar, dass es nicht funktioniert.

  1. Du lädst das Bild so oft, wie insgesamt gerendert wird. (Meistens 60 mal die Sekunde)
    Du lädst es einfach nur, ohne etwas mit dem zu machen.
    Du renderst das zuletzt verwendete Bild noch einmal und das über das gesamte Fenster.
    Du verwendest den gleichen Pfad, wie vorhin gezeigt.
Kannst du bitte lernen, was der Code überhaupt macht und wie man solchen schreibt?




ok könntest du bitte den richtigen code zeigen (ich fange gerade erst mit coden an)
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top