Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Bild in 2 Canvassen verwenden

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Bild in 2 Canvassen verwenden

    Hallo Leute, ich schon wieder mit J2ME

    Folgendes Problem:
    Speichersparen ist angesagt.

    Es gibt 2 Canvas-Objekte (von gleicher Klasse aus generiert), die je nach Flag gezeigt werden. Beide Canvasse haben ein (identisches) Hintergrundbild, was sie aus dem jar fischen. Canvas2 könnte zur Not darauf verzichten.

    Bringt es was, das 2.Hintergrundbild wegzulassen?
    Oder optimiert Java auf den gemeinsamen Zugriff der beiden Objekte auf 1 Bild im Speicher?

    Kurz: wird das gesamte Bildmaterial 1x oder 2x in den Speicher geladen?

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Wenn du das Bild aus dem selben Objekt lädst (ohne es zu kopieren), dann sollte das afaik nicht zweimal geladen werden... (solange du das Objekt nicht zwei mal erstellst...). Aber andere Frage: Wieso brauchst du überhaupt zwei mal nen Canvas? Kannst du die beide gleichzeitig auf dem Display anzeigen?! (monsterhändy )

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Monsterhandy war gut!

    Nee, Canvas2 gehört in eine Bibliothek, die im Aufbau ist. Die hat schon eine Doppelfunktion, so nach dem Motto

    switch(flag)
    { case 1: paint_dies_mal_hin(); break;
    case 2: paint_das_mal_hin(); break;
    }

    Canvas1 ist hoch variabel, hat andere Cursor-Belegungen und leicht veränderte Menus, kurz und gut, es gäbe ein fürchterliches Kuddelmuddel, wollte ich diese beiden Canvasse vereinigen.

    Das Einzige, was die beiden gemeinsam haben, sind die Hintergründe und die Zeichenfarbe.

    Die Objekte werde je einmal im main() erstellt und schlürfen sich mit dieser Funktion ihre Bilder:

    Code:
      Image hole_bild(String bilddatei) 
      { Image bild=null;
        try { bild=Image.createImage(bilddatei); }
        catch(java.io.IOException e) { System.out.print("\n Image "+bilddatei+" not found\n"); }
        return bild;
      }
    Dieses Sniplet hat jeder Canvas für sich, die Bilddatei heisst immer bgr.png.

    Beim Emulator taucht einmal die Bildgröße bei der Garbage Collection auf, aber die Variation der Bytecodelänge bei verschiedenen Durchläufen ist breiter gestreut als die Bildgröße.
    Eigentlich ganz einfach, wenn man's weiss!

  4. #4
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Was so ein Schluck Kaffee doch ausmacht:

    Das Bild wird in Main geladen, die Canvasse bekommen je einen neuen Konstruktor mit Bildpointerübergabe, ich denke, dann wird der Kram nur 1x geladen. Oder liege ich da falsch?


    Habe das mit der Imagepointerübergabe getestet, die Statistik des Emulators zeigte keine signifikante Besserung.

    Java scheint also schon ziemlich rigoros zu optimieren.
    Geändert von BlueJay (18-07-2007 um 11:55 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •