[JAVA] laadbalk voordat het helemaal geladen is

Pagina: 1
Acties:

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 15-09 23:09
Ik ben bezig met een spel, maar het laden van de applet duurt vrij lang met een modem. Dan zie je alleen een grijs vlak.

Nu zie ik wel eens dat er een kleine applet geladen wordt, en dan zo'n laad-progress meter ziet.

Hoe doen ze dat?

  • LightYears
  • Registratie: September 2000
  • Laatst online: 14-03-2024

LightYears

wilt geen iPod

Meerdere mogelijkheden
je kan bijvoorbeeld een progressbar laten zien die bij verschillende key momenten wat doet, bijvoorbeeld zolang een variable false is istie in de ene fase, wordt de variable true dan andere fase
vb:
code:
1
2
3
4
5
6
boolean first = false;
.
.
.
.
boolean first = true

met op de puntjes iets wat ingeladen moet worden

dan bij de progressbar :
code:
1
2
3
4
while (!first)
.
.
.

maar er zijn ook andere manieren hoor, deze geeft je wel veel controle, maar je kan bijvoorbeeld ook op grootte kijken enzo
snuffel gewoon even bij java.sun.com daar staat zoals altijd genoeg informatie om mee aan de slag te kunnen gaan.
suc6

EAC > Ogg vorbis -q6 > Cowon S9 > Westone ES3X > Oor


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

gewoon een percentage bijhouden bij het laden.
code:
1
2
3
4
5
6
7
8
9
10
11
public void myInit() {
  .. laad plaatje 1 ..
  updatePerc("10%");
  .. laad plaatje 2 ..
  updatePerc("20%");
}

public void updatePerc(String perc) {
  screenbuffer.drawString(perc,100,100);
  update();
}

wel ff rekening houden met 'pageflip' etc...

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 15-09 23:09
Op woensdag 09 januari 2002 15:31 schreef LightYears het volgende:
vb:
code:
1
2
3
4
5
6
boolean first = false;
.
.
.
.
boolean first = true

met op de puntjes iets wat ingeladen moet worden

dan bij de progressbar :
code:
1
2
3
4
while (!first)
.
.
.
Ik heb gesnuffeld bij java.sun.com :)

Het probleem is, dat de browser de hele applet in 1x wil laden, en dan pas runt. Voor die tijd kun je helemaal niks doen.

Maar ik heb dus een best grote gecompilede class file.
Hoe moet ik die gecompilede class file inladen met een kleinere gecompilede class file?

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 15-09 23:09
Op woensdag 09 januari 2002 15:34 schreef Scorpion het volgende:
gewoon een percentage bijhouden bij het laden.
HOE???

die applet is nog niet gestart als ie laadt!

  • LightYears
  • Registratie: September 2000
  • Laatst online: 14-03-2024

LightYears

wilt geen iPod

verwijzen naar een preload class in je init :)
of preload methode :)
en dan weer met de keypoints werkt perfect.

ghehe maar je kan ook tegen je klanten zeggen ga lekker met de 1.4 werken, die heeft het standaard erin zitten

EAC > Ogg vorbis -q6 > Cowon S9 > Westone ES3X > Oor


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Op woensdag 09 januari 2002 15:35 schreef Mastermind het volgende:

[..]

HOE???

die applet is nog niet gestart als ie laadt!
de applet laden, en zelf een methode aanroepen die alles laad, voordat je in de mainloop springt. niet alles via init() laden.

verder als je class files erg groot zijn moet je ff een class schrijven die een andere classfile laad.

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

ik wou net zeggen nadat ik mijn JRE geupdate had naar 1.4.0b3 deed ie dat in een keer automagisch :) en meteen wilden ook een heleboel applets niet meer starten vanwege "niet gevonden klassen" :'(

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

code:
1
2
3
4
5
6
7
8
public void init() {
}

public void run() {
  myInitialisatie();
  while(!exit) {
  }
}

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Op woensdag 09 januari 2002 15:38 schreef limoentje het volgende:
ik wou net zeggen nadat ik mijn JRE geupdate had naar 1.4.0b3 deed ie dat in een keer automagisch :) en meteen wilden ook een heleboel applets niet meer starten vanwege "niet gevonden klassen" :'(
1.4 zuigt wat dat betreft nog enorm, ik wacht mooi tot ie final is.

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

mja als ik vanavond thuis ben zal ik ook maar weer eens een oudere tevoorschijn toveren.... waren die fouten er ook in beta1 en 2?? oftewel: gaan we terug naar 1.3.1 (dat was het toch? kheb em overgeslagen) ?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

[b]Op woensdag 09 januari 2002 15:36 schreef
en dan weer met de keypoints werkt perfect.
Kan je beter een percentage bijhouden als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  int geladen = 0;

  public void myInitialisation() {
    // laad iets
    load(10);
    // laad iets
    load(10);
  }

  public void load(int percentage) {
    geladen += percentage;
    // teken balk van:
    // (100-percentage) pixels lang
    // 10 pixels breed
  }

anyways, you get the point

  • LightYears
  • Registratie: September 2000
  • Laatst online: 14-03-2024

LightYears

wilt geen iPod

nou zeg ik wel dat het zo makkelijk is maar ik heb exact het zelfde probleem alleen net iets anders, dus niet echt exact het zelfde :o

maar goed, ik heb een applet (java 3d) en die draait perfect
moet wat modellen inladen (totaal 300kB) dus dat duurt wel even

als application heeft de main class de volgende volgorde:

main .. constructor .. init .. createBoard() (met createBoard een methode die de Java 3D onderdelen inlaadt in de virtuele wereld)

als applet is de volgorde (uiteraard)
init ... createBoard() (want createboard wordt in de inint aangeroepen)

afin, ik zet in de init een verwijzing naar mijn preload methode, deze roept de paint methode aan die enkele dingen op het scherm laat zien.

Helaas gaat het verhaal niet op, de paint wordt pas NA de init aangeroepen :(

in application vorm wordt wél eerst de paint aangeroepen

iemand een id voor een oplossing?

relevante code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public J3DChess() {
    }

    public void init()
    {
        try {
        // maak een url aan, deze is nodig om de stukken in te laden
            oldurl = new URL(getDocumentBase(), "");
            // maak hier een string van, nodig om de textures in te laden
            oldbase = new String (oldurl.toString());
            if (oldbase.endsWith("Game.htm")) {
                // zorg ervoor dat als de url eindigd op de html pagina dat deze wordt verwijderd
                String remove = "Game.htm";
                int startremove = oldbase.indexOf(remove);
                base = oldbase.substring(0, startremove);
                url = new URL(getCodeBase(), "");
            }
            else {
                // anders is de url de verkregen url
                base = oldbase;
                url = oldurl;
            }
            // maak een icon aan voor de about box
            abouticon = new ImageIcon (new URL(url,"icon.gif"));
        }
        catch (MalformedURLException m){
            System.err.println(m);
        }
        // maak de layout aan
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        canvas3d = new Canvas3D(config);
        Container c  = getContentPane();
        c.setLayout(new BorderLayout());
        BranchGroup branchgroup1 = createBoard();
        simpleU      = new SimpleUniverse(canvas3d);
        simpleU.getViewingPlatform().setNominalViewingTransform();
        simpleU.addBranchGraph(branchgroup1);
        validate();
        c.add(canvas3d, BorderLayout.CENTER);
    }
/**
 * de methode createBoard() verzameld de verschillende onderdelen van het schaakbord en plaats deze
 * in 1 Branchgroup
 */
    public BranchGroup createBoard()
    {
        BranchGroup branchgroup1 = new BranchGroup();
        Transform3D transform3d = new Transform3D(camera);
        board = new TransformGroup(transform3d);
        board.setCapability(board.ALLOW_TRANSFORM_READ);
        board.setCapability(board.ALLOW_TRANSFORM_WRITE);
        board.setCapability(board.ALLOW_CHILDREN_EXTEND);
.
.
.
.
.
.
.

zoals je ziet wordt het board dus aangemaakt en in in de container gezet, een paint methode tekent hier dus overheen!

url met applet: http://liquid2k.com/arielext/j3dchess/index.html
belangrijk als je de applet wil testen moet je de javaplugin (1.3) en de Java 3D extentie hebben, links staaan op de site bij requirements.

EAC > Ogg vorbis -q6 > Cowon S9 > Westone ES3X > Oor


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Op woensdag 09 januari 2002 15:47 schreef LightYears het volgende:
nou zeg ik wel dat het zo makkelijk is maar ik heb exact het zelfde probleem alleen net iets anders, dus niet echt exact het zelfde :o

maar goed, ik heb een applet (java 3d) en die draait perfect
moet wat modellen inladen (totaal 300kB) dus dat duurt wel even

als application heeft de main class de volgende volgorde:

main .. constructor .. init .. createBoard() (met createBoard een methode die de Java 3D onderdelen inlaadt in de virtuele wereld)

als applet is de volgorde (uiteraard)
init ... createBoard() (want createboard wordt in de inint aangeroepen)

afin, ik zet in de init een verwijzing naar mijn preload methode, deze roept de paint methode aan die enkele dingen op het scherm laat zien.

Helaas gaat het verhaal niet op, de paint wordt pas NA de init aangeroepen :(

in application vorm wordt wél eerst de paint aangeroepen

iemand een id voor een oplossing?

relevante code:

zoals je ziet wordt het board dus aangemaakt en in in de container gezet, een paint methode tekent hier dus overheen!

url met applet: http://liquid2k.com/arielext/j3dchess/index.html
belangrijk als je de applet wil testen moet je de javaplugin (1.3) en de Java 3D extentie hebben, links staaan op de site bij requirements.
je moet alles pas doen in de main je methode VOOR de hoofdlus.. fuck init, doe daar de dingen zoals width/height etc... maar als je plaatjes gaat laden, ga dan naar de methode die na init komt. start een thread, en voer daar VOOR je aan je game begint de initialisatie van de diverse textures, etc... uit, met de loading-screen.

ik doe hetzelf altijd in de run methode van de thread welke ik start, voordat ik in de main game loop kom. voorbeeldje heb ik al gegeven.
Pagina: 1