Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[J2ME] Sprite

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Er moet een opdracht gemaakt worden, een spelletje. Ben niet de meest ervaren programmeur en als de ervaring er al is dan is het in JSP. Mij is snel duidelijk gewoden dat het verschil met JSP en J2ME erg groot is! Ik heb onderstaande bestanden op internet gevonden en gebruik ze als uitgangspunt voor een spel, dit mag. Het is zo dat ik een programma heb waar een tank aan het rijden is, maar ook gewoon het scherm uit kan rijden. Dat laatste mag dus niet, ik wil dus op de een of andere manier een grens hebben.
Ik heb met een ervaren programmeur gesproken, die zei:
... zegt:
als je een nieuwe sprite maakt, b.v. zo:
Sprite a = new Sprite();
of:
MicroTankSprite mTank = new MicroTankSprite();

... zegt:
dan kan je in je method (moet je ff kijken waar je moet weten waar je sprite is op het scherm) het volgende doen:
int xPos = mTank.getX()

... zegt:
maar dat geeft dus de x op het moment dat je het aanroept, de 'xPos' wordt niet aangepast als de sprite beweegd

... zegt:
waarschijnlijk moet je iets doen dat lijkt op:
new Sprite(new Image("myimage.png"));

... zegt:
en anders iets als:
Image image = Image.createImage("tank.png");

... zegt:
Sprite sprite = new Sprite(image);
Alleen werkt het niet, ben er vrijwel de hele dag mee bezig geweest en sites als:
java-tips.org
en
blackberry.net
helpen me dan ook niet verder omdat het om de een of andere reden niet werkt. Ik hoop dat iemand mij verder op weg kan helpen.

File: MicroTankCanvas
Java:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
import java.io.IOException;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class MicroTankCanvas
    extends GameCanvas
    implements Runnable {
  private volatile boolean mTrucking;
  private MicroTankSprite mTank;
  private TiledLayer mBoard;

  private LayerManager mLayerManager;

  public MicroTankCanvas() throws IOException {
    super(true);

    mTank = createTank();
    mTank.setPosition(0, 60);
    mBoard = createBoard();

    mLayerManager = new LayerManager();
    mLayerManager.append(mTank);
    mLayerManager.append(mBoard);
  }

  private MicroTankSprite createTank() throws IOException {
    Image image = Image.createImage("/tank.png");
    return new MicroTankSprite(image, 16, 16);
  }

  private TiledLayer createBoard() throws IOException {
    Image image = Image.createImage("/board.png");
    TiledLayer tiledLayer = new TiledLayer(11, 11, image, 4, 4);

    int[] map = {
       1,  1,  1,  1, 11,  0,  0,  0,  0,  0, 1,
       0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 1,
       0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 1,
       0,  0,  0,  0,  9,  0,  0,  0,  0,  0, 1,
       0,  0,  0,  0,  1,  0,  0,  0,  0,  0, 1,
       0,  0,  0,  7,  1,  0,  0,  0,  0,  0, 1,
       1,  1,  1,  1,  6,  0,  0,  0,  0,  0, 1,
       0,  0,  0,  0,  0,  0,  0,  7, 11,  0, 1,
       0,  0,  0,  0,  0,  0,  7,  6,  0,  0, 1,
       0,  0,  0,  0,  0,  7,  6,  0,  0,  0, 1,
       0,  0,  0,  0,  0,  7,  6,  0,  0,  0, 1
    };

    for (int i = 0; i < map.length; i++) {
      int column = i % 11;
      int row = (i - column) / 11;
      tiledLayer.setCell(column, row, map[i]);

    }

    return tiledLayer;
  }

  public void start() {
    mTrucking = true;
    Thread t = new Thread(this);
    t.start();
  }

  public void run() {
    Graphics g = getGraphics();

    int timeStep = 80;

    while (mTrucking) {
      long start = System.currentTimeMillis();

      tick();
      input();
      render(g);

      long end = System.currentTimeMillis();
      int duration = (int)(end - start);

      debug(g, duration * 100 / timeStep);

      if (duration < timeStep) {
        try { Thread.sleep(timeStep - duration); }
        catch (InterruptedException ie) { stop(); }
      }
    }
  }

  private void tick() {
    if (mTank.collidesWith(mBoard, true))
      mTank.undo();
  }

  private int w, h, x, y;

  private void render(Graphics g) {
    w = getWidth();
    h = getHeight();

    g.setColor(0xffffff);
    g.fillRect(0, 0, w, h);

    x = (w - 160) / 2;
    y = (h - 160) / 2;

    mLayerManager.paint(g, x, y);

    g.setColor(0x000000);
    g.drawRect(x, y, 160, 160);

    flushGraphics();
  }

int b;

  private void input()
{

  int keyStates = getKeyStates();
    if ((keyStates & LEFT_PRESSED) != 0) mTank.turn(-1);

    else if ((keyStates & RIGHT_PRESSED) != 0) mTank.turn(1);

    else if ((keyStates & UP_PRESSED) != 0)

    {
    if (b == 50)
    {
        mTank.undo();
    }
    else
    {
    mTank.forward(4);
    b++;
    }
}

    else if ((keyStates & DOWN_PRESSED) != 0)
    {
    b = (b - 1);
    mTank.forward(-2);
}

int a_xPos = mTank.getX();
int a_x = mTank.getX();


 }

  private void debug(Graphics g, int percent) {

    StringBuffer sb = new StringBuffer();
    sb.append(Integer.toString(percent));
    sb.append('%');
    String s = sb.toString();

    Font font = g.getFont();
    int sw = font.stringWidth(s) + 2;
    int sh = font.getHeight();

    g.setColor(0xffffff);
    g.fillRect(w - sw, h - sh, sw, sh);
    g.setColor(0x000000);
    g.drawRect(w - sw, h - sh, sw, sh);
    g.drawString("b: " + b + " Procent:" + percent + "%", w, h,
        Graphics.RIGHT | Graphics.BOTTOM);



    flushGraphics();
  }

  public void stop() {
    mTrucking = false;
  }
}

MicroTankMIDlet.java
Java:
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
import java.io.IOException;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;

public class MicroTankMIDlet
    extends MIDlet
    implements CommandListener {
  private MicroTankCanvas mMicroTankCanvas;

  public void startApp() {
    if (mMicroTankCanvas == null) {
      try {
        mMicroTankCanvas = new MicroTankCanvas();
        mMicroTankCanvas.start();
        Command exitCommand = new Command("Exit", Command.EXIT, 0);
        mMicroTankCanvas.addCommand(exitCommand);
        mMicroTankCanvas.setCommandListener(this);
      }
      catch (IOException ioe) {
        System.out.println(ioe);
      }
    }

    Display.getDisplay(this).setCurrent(mMicroTankCanvas);
  }

  public void pauseApp() {}

  public void destroyApp(boolean unconditional) {
    if (mMicroTankCanvas != null)
      mMicroTankCanvas.stop();
  }

  public void commandAction(Command c, Displayable s) {
    if (c.getCommandType() == Command.EXIT) {
      destroyApp(true);
      notifyDestroyed();
    }
  }
}

File: MicroTankSprite.java
Java:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class MicroTankSprite
    extends Sprite {
  private int mDirection;
  private int mKX, mKY;
  public static Image createImage (Image image);
  public Sprite (Image "/tank.png");
  //Sprite sprite = new sprite ("/tank.png");

  private int mLastDelta;
  private boolean mLastWasTurn;

 private static final int[] kTransformLookup = {
    Sprite.TRANS_NONE, Sprite.TRANS_NONE, Sprite.TRANS_NONE,
        Sprite.TRANS_MIRROR_ROT90,
    Sprite.TRANS_ROT90, Sprite.TRANS_ROT90, Sprite.TRANS_ROT90,
        Sprite.TRANS_MIRROR_ROT180,
    Sprite.TRANS_ROT180, Sprite.TRANS_ROT180, Sprite.TRANS_ROT180,
        Sprite.TRANS_MIRROR_ROT270,
    Sprite.TRANS_ROT270, Sprite.TRANS_ROT270, Sprite.TRANS_ROT270,
        Sprite.TRANS_MIRROR
  };

  private static final int[] kFrameLookup = {
    0, 1, 2, 1,
    0, 1, 2, 1,
    0, 1, 2, 1,
    0, 1, 2, 1
  };

  private static final int[] kCosLookup = {
       0,  383,  707,  924,
    1000,  924,  707,  383,
       0, -383, -707, -924,
   -1000, -924, -707, -383
  };

  private static final int[] kSinLookup = {
    1000,  924,  707,  383,
       0, -383, -707, -924,
   -1000, -924, -707, -383,
       0,  383,  707,  924
  };

  public MicroTankSprite(Image image, int frameWidth, int frameHeight) {
    super(image, frameWidth, frameHeight);
    defineReferencePixel(frameWidth / 2, frameHeight / 2);
    mDirection = 0;
  }


    void init()
    {
        try {
        Image image=Image.createImage("/tank.png");
        } catch(Exception e){}

        sprite = new Sprite(img);
    }

  public void turn(int delta) {
    mDirection += delta;
    if (mDirection < 0) mDirection += 16;
    if (mDirection > 15) mDirection %= 16;

    setFrame(kFrameLookup[mDirection]);
    setTransform(kTransformLookup[mDirection]);

    mLastDelta = delta;
    mLastWasTurn = true;
  }

  public void forward(int delta) {
    fineMove(kCosLookup[mDirection] * delta,
        -kSinLookup[mDirection] * delta);
    mLastDelta = delta;
    mLastWasTurn = false;
  }

  public void undo() {
    if (mLastWasTurn)
      turn(-mLastDelta);
    else
      forward(-mLastDelta);
  }

  private void fineMove(int kx, int ky) {

    int x = getX();
    int y = getY();
    int errorX = Math.abs(mKX - x * 1000);
    int errorY = Math.abs(mKY - y * 1000);
    if (errorX > 1000 || errorY > 1000) {
      mKX = x * 1000;
      mKY = y * 1000;
    }
    mKX += kx;
    mKY += ky;
    setPosition(mKX / 1000, mKY / 1000);

  }

}

My Laptop Specificaties vs My Desktop Specificaties


  • MisterICE
  • Registratie: April 2004
  • Laatst online: 12-09 01:42
Ik heb niet de hele code doorgelopen, maar wat je wilt lijkt me niet zo lastig,

als de functie public void forward(int delta) aangeroepen wordt, dan moet die functie een check hebben die de nieuwe positie vergelijkt met de randen van het veld, wil iemand de tank over de rand rijden doe je een return; en anders laat je de functie gewoon uitvoeren :)

dus:
Java:
1
2
3
4
5
6
7
8
9
10
  public void forward(int delta) {
  
   if(........)    //check positie
   { return; }

    fineMove(kCosLookup[mDirection] * delta,
        -kSinLookup[mDirection] * delta);
    mLastDelta = delta;
    mLastWasTurn = false;
  } 

[ Voor 33% gewijzigd door MisterICE op 02-01-2007 20:53 ]


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
MisterICE schreef op dinsdag 02 januari 2007 @ 20:49:
Ik heb niet de hele code doorgelopen, maar wat je wilt lijkt me niet zo lastig,

als de functie public void forward(int delta) aangeroepen wordt, dan moet die functie een check hebben die de nieuwe positie vergelijkt met de randen van het veld, wil iemand de tank over de rand rijden doe je een return; en anders laat je de functie gewoon uitvoeren :)

dus:
Java:
1
2
3
4
5
6
7
8
9
10
  public void forward(int delta) {
  
   if(........)    //check positie
   { return; }

    fineMove(kCosLookup[mDirection] * delta,
        -kSinLookup[mDirection] * delta);
    mLastDelta = delta;
    mLastWasTurn = false;
  } 
Oké, dat klinkt op zich goed! En aan wat voor soort functie moet ik dan denken? Want die programmeur die ik sprak had het dus over het aanmaken van een nieuwe sprite, maar dat zou dan niet nodig zijn? Als ik een beetje een richt heb van wat voor functie dan kan vriendje google me vast wel een eind op weg helpen.

My Laptop Specificaties vs My Desktop Specificaties


  • MisterICE
  • Registratie: April 2004
  • Laatst online: 12-09 01:42
vegterb schreef op dinsdag 02 januari 2007 @ 21:06:
[...]


Oké, dat klinkt op zich goed! En aan wat voor soort functie moet ik dan denken? Want die programmeur die ik sprak had het dus over het aanmaken van een nieuwe sprite, maar dat zou dan niet nodig zijn? Als ik een beetje een richt heb van wat voor functie dan kan vriendje google me vast wel een eind op weg helpen.
Lijkt me nogal raar om een nieuwe sprite te maken om te checken of je sprite niet uit het veld rijdt.
Als je dit niet logisch vind klinken, misschien moet je nog ff wat Java (sprite) tutorials doorlezen?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:46

Creepy

Tactical Espionage Splatterer

vegterb schreef op dinsdag 02 januari 2007 @ 21:06:
[...]


Oké, dat klinkt op zich goed! En aan wat voor soort functie moet ik dan denken? Want die programmeur die ik sprak had het dus over het aanmaken van een nieuwe sprite, maar dat zou dan niet nodig zijn? Als ik een beetje een richt heb van wat voor functie dan kan vriendje google me vast wel een eind op weg helpen.
Eeh.. denk gewoon eens logisch na. Je weet de X coordinaat van de sprite en je weet als het goed is hoe breed je scherm is. Dan kan je zo uitrekenen of de sprite nog mag bewegen of niet. Voor nagenoeg elke programmeur moet dit voldoende informatie zijn.

Zou je daarnaast je startpost eens flink kunnen inkorten door alleen de relevante code te plaatsen i.p.v. alle code? Nu komt het nogal over op "ik wil dit, dit is mijn code, fix it please", iets wat hier niet de bedoeling is. Hier verwachten we ook van je dat je in eerste instantie zelf aan de slag gaat en dat je hier ook aangeeft welke zaken je nu zelf hebt geprobeerd en wat daar niet goed mee ging. Een melding "het werkt niet" zegt ons dan ook helemaal niks.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Creepy schreef op woensdag 03 januari 2007 @ 09:53:
[...]

Eeh.. denk gewoon eens logisch na. Je weet de X coordinaat van de sprite en je weet als het goed is hoe breed je scherm is. Dan kan je zo uitrekenen of de sprite nog mag bewegen of niet. Voor nagenoeg elke programmeur moet dit voldoende informatie zijn.

Zou je daarnaast je startpost eens flink kunnen inkorten door alleen de relevante code te plaatsen i.p.v. alle code? Nu komt het nogal over op "ik wil dit, dit is mijn code, fix it please", iets wat hier niet de bedoeling is. Hier verwachten we ook van je dat je in eerste instantie zelf aan de slag gaat en dat je hier ook aangeeft welke zaken je nu zelf hebt geprobeerd en wat daar niet goed mee ging. Een melding "het werkt niet" zegt ons dan ook helemaal niks.
No offense, maar mag ik jou dan vragen of je überhaupt mijn start post gelezen hebt? Aangezien ik er al de hele dag mee bezig ben geweest en de websites heb gegeven waar ik gebruik van heb gemaakt om een aantal dingen te proberen en gesproken met een programmeur waar ik dingen van gehoord heb, maar aangezien ik niet aanleg heb om te programmeren en het wel moet wil ik verder. Het werd mij snel duidelijk dat ik verkeerd bezig was en de logica achter deze code nog niet helemaal snap.

Ik heb toch ook niet gezegd dat ik de oplossing wil hebben, ik wil een denkrichting of werk richting hebben. En helaas, als iemand zegt dat ik even een functie aan moet maken dan lukt mij dat niet. Er is ook (helaas) niet genoeg tijd om allemaal tutorials door te lopen (school |:( ), ben voorheen te druk geweest en nu moet het af.

Aangezien die programmeur mij vroeg om de bestanden te sturen leek het mij makkelijker om alle code te plaatsen om een duidelijk beeld te krijgen. Zo bleek maar weer uit de reactie van MisterICE, de code waar hij een reactie op geeft had ik nooit aan gedacht om aan te passen.

Ook plaats ik niet zomaar een code op GoT als ik er niet al uren mee bezig ben geweest, met een klein dingetje omdat ik uit ervaring weet dat programmeer kwaliteiten een vereiste zijn hier op GoT. Ik had alleen gehoopt dat mijn probleem iets moeilijker zou zijn O-)

Vandaag ga ik in ieder geval weer 'lekker' verder om te kijken wat ik er vandaag van maken :P

Ps.: Oh... weet ik de X-coördinaten van mijn sprite? :?

edit:

Misschien is het wat om een gedeelte aan te maken voor de n00bs onder ons, mensen die ondanks uren/dagen werk niet uit iets wat (relatief) simpel is kunnen komen.

[ Voor 4% gewijzigd door vegterb op 03-01-2007 11:26 ]

My Laptop Specificaties vs My Desktop Specificaties


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:46

Creepy

Tactical Espionage Splatterer

vegterb schreef op woensdag 03 januari 2007 @ 11:15:
[...]

Ps.: Oh... weet ik de X-coördinaten van mijn sprite? :?

edit:

Misschien is het wat om een gedeelte aan te maken voor de n00bs onder ons, mensen die ondanks uren/dagen werk niet uit iets wat (relatief) simpel is kunnen komen.
Met een newbie is niks mis, echt niet. Met een goed onderbouwde simple vraag ook niet. Maar de vraag over de X coordinaat die je nu stelt is erg typerend voor dit hele topic. Zelfs in de code die je nu al gebruikt (en zelf geschreven zou moeten hebben) vraag je de X coordinaat al op m.b.v. de getX() method. Dit had je zeker al moeten weten. Ik kan je aanraden de docs van de gebruikte Sprite class er even bij te pakken.

Dat je te druk bent geweest en nu geen tijd hebt om tutorials te doen of docs te lezen is hard gezegd niet ons probleem maar jouw probleem.

Dus voor je denk richting: check voordat er bewogen wordt of je nog verder kan bewegen in een bepaalde richting. Zo ja, gewoon bewegen, zo nee, laat de coordinaten hetzelfde.

[ Voor 21% gewijzigd door Creepy op 03-01-2007 11:36 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Creepy schreef op woensdag 03 januari 2007 @ 11:29:
[...]

Met een newbie is niks mis, echt niet. Met een goed onderbouwde simple vraag ook niet. Maar de vraag over de X coordinaat die je nu stelt is erg typerend voor dit hele topic. Zelfs in de code die je nu al gebruikt (en zelf geschreven zou moeten hebben) vraag je de X coordinaat al op m.b.v. de getX() method. Dit had je zeker al moeten weten. Ik kan je aanraden de docs van de gebruikte Sprite class er even bij te pakken.

Dat je te druk bent geweest en nu geen tijd hebt om tutorials te doen of docs te lezen is hard gezegd niet ons probleem maar jouw probleem.

Dus voor je denk richting: check voordat er bewogen wordt of je nog verder kan bewegen in een bepaalde richting. Zo ja, gewoon bewegen, zo nee, laat de coordinaten hetzelfde.
Oh, je bedoeld mijn briljante:
int a_xPos = mTank.getX();
int a_x = mTank.getX();
Maar die heb ik ook niet zelf verzonnen, die heb ik erin gezet en daar was ik toen net mee aan de slag gegaan om te kijken wat ik daarmee kon. Ik ben nog steeds aan het lezen en informatie aan het zoeken over sprite.

Ik heb dit helaas niet zelf geschreven, als ik dat zou kunnen was ik hier niet geweest! Maar ik begrijp dus dat ik niet een nieuwe sprite hoef aan te maken (Waarom die programmeur mij dat wilde laten doen snap ik dan ook niet) maar gewoon een getX en getY moet gebruiken om die vervolgens weer te vergelijken met de indelingen van mijn scherm. Daarnaast dus nog een continue positie-update. Bedankt! (Dat ik te weinig tijd heb gehad is inderdaad mijn probleem, zou wat zijn als het jullie probleem werd ;))

edit:

Maar, hoe dom ook... ik snap nu wel waar je heen wilt en heb het nu al deels werkende. Hoe simpel kan het zijn. Kan me nu ook voorstellen waarom dit een 'domme' vraag was, door iets waar ik gewoon niet aan gedacht heb of over het hoofd gezien had. Ik schaam me :$

[ Voor 7% gewijzigd door vegterb op 03-01-2007 12:02 ]

My Laptop Specificaties vs My Desktop Specificaties


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Oké, ik hoop niet dat er mensen nu heel boos op mij gaan worden maar voorgaande is relatief netjes opgelost en ziet er goed uit. Bedankt daarvoor. Nu wil ik dus een score naar een bestand wegschrijven en uiteindelijk kunnen uitlezen. Ik heb op veel plekken gekeken en tutorials gevolgd en voorbeelden gebruikt. Uiteindelijk kwam ik tot dit:
Java:
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
public void file()
{
try
    {
        FileConnection fconn = (FileConnection) Connector.open("file:///C:/WTK25-Beta2/apps/muTank/src/test.txt");

        if (!fconn.exists())
            fconn.create();


        OutputConnection connection = (OutputConnection)
        Connector.open("file:///C:/WTK25-Beta2/apps/muTank/src/test.txt", Connector.WRITE );
        OutputStream out = connection.openOutputStream();
        PrintStream output = new PrintStream( out );
        output.println( "This is a test." );
        out.close();
        fconn.close();
    }
    catch (IOException e)
    {
        Alert alert = new Alert("IOException: " + e.getMessage());
    }
    catch (SecurityException e)
    {
        Alert alert = new Alert("SecurityException: " + e.getMessage());
    }
}


Het werkt op zich wel, geen foutmeldingen o.i.d. maar het probleem is dus dat er niets weggeschreven wordt in mijn tekstbestand, dus heb ik toegevoegd dat mocht het bestand niet bestaan dat die aangemaakt moet worden. Dat gebeurd dus ook niet of het klopt en het bestand bestaat gewoon. Ook "file:///root1/test.txt" bij Connector.open werkt niet (test.txt dus in de appdb map)

My Laptop Specificaties vs My Desktop Specificaties


  • Ansur
  • Registratie: Januari 2004
  • Laatst online: 29-10 13:35
Als je gewoon nog maar even zou zoeken op java write to file zou je bij de eerste hit al een werkend voorbeeld krijgen...

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 22-11 08:35

NetForce1

(inspiratie == 0) -> true

Volgens mij moet het werken las je output.close() aanroept ipv out.close(). Standaard flushed een outputstream nl niet als je closed, een PrintStream echter wel.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Ansur schreef op woensdag 03 januari 2007 @ 19:21:
Als je gewoon nog maar even zou zoeken op java write to file zou je bij de eerste hit al een werkend voorbeeld krijgen...
Java, maar dat is moeilijk werkend te krijgen. Ik heb juist gezocht op J2ME, want dat is waar ik mee werk. Als ik namelijk dergelijke Java code gebruik krijg ik fouten als:
code:
1
2
3
4
C:\WTK25-Beta2\apps\muTank\src\MicroTankCanvas.java:43: cannot find symbol
symbol  : class FileWriter
location: class MicroTankCanvas.FileWrite
    FileWriter fstream = new FileWriter("out.txt");


Net zoals uit mijn vorige post, in de GameCanvas (MicroTankCanvas.java) gezet.
NetForce1 schreef op woensdag 03 januari 2007 @ 19:29:
Volgens mij moet het werken las je output.close() aanroept ipv out.close(). Standaard flushed een outputstream nl niet als je closed, een PrintStream echter wel.
Huh? Er staat toch "OutputStream out" en "PrintStream output", dan zou je toch juist een out.close(); nodig hebben i.p.v. een output.close(); omdat de PrintStream al standaard flushed.

My Laptop Specificaties vs My Desktop Specificaties


  • Lone Gunman
  • Registratie: Juni 1999
  • Niet online
Ansur: als je daar op zoekt krijg je alleen sites met betrekking tot j2se file io, en deze wijkt nogal af van file io onder j2me (jsr-75).

ts: kijk hier eens http://developers.sun.com.../articles/fileconnection/
Staan enkele voorbeelden in en onderaan de pagina staat uitgelegd hoe je de WTK in moet stellen om file io te kunnen doen vanuit je midlet.

Experience has taught me that interest begets expectation, and expectation begets disappointment, so the key to avoiding disappointment is to avoid interest.


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 22-11 08:35

NetForce1

(inspiratie == 0) -> true

vegterb schreef op woensdag 03 januari 2007 @ 19:58:

Huh? Er staat toch "OutputStream out" en "PrintStream output", dan zou je toch juist een out.close(); nodig hebben i.p.v. een output.close(); omdat de PrintStream al standaard flushed.
Hmm, je hebt gelijk, dan heb je waarschijnlijk dus meer aan de post van Lone Gunman

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Lone Gunman schreef op woensdag 03 januari 2007 @ 20:00:
Ansur: als je daar op zoekt krijg je alleen sites met betrekking tot j2se file io, en deze wijkt nogal af van file io onder j2me (jsr-75).

ts: kijk hier eens http://developers.sun.com.../articles/fileconnection/
Staan enkele voorbeelden in en onderaan de pagina staat uitgelegd hoe je de WTK in moet stellen om file io te kunnen doen vanuit je midlet.
Hmmm... Die site had ik inderdaad ook al eens gevonden en dingen geprobeerd. Het probleem is misschien ook dat ik er niet rustig voor wil/kan zitten en mijn kennis van J2ME tot gisterochtend vrijwel nihil was en ik alleen wat JSP kennis als basis heb. Als die website al (relatief) makkelijk zou moeten zijn in uitleg is het voor misschien te hoog gegrepen en moet ik een andere manier zien te vinden om een highscore te bewaren. Eigenlijk nog (veel) meer dingen, maar dat red ik nooit

Momenteel zie ik het even niet meer zitten met de applicatie! Stress doet het meestal niet zo goed met programmeren :X Heb nog een halve dag om er wat leuks van te maken, dus toch bedankt iedereen! Nu eerst: :z

My Laptop Specificaties vs My Desktop Specificaties


  • Lone Gunman
  • Registratie: Juni 1999
  • Niet online
Er is wel een andere methode om data op te slaan/in te lezen vanuit een midlet (mbv een RecordStore).
Deze wordt denk ik het meeste gebruikt, aangezien (bijna) elke java telefoon dit ondersteunt, itt file io. Er zal dus wel redelijk wat informatie over te vinden zijn. De "moeilijkheidsgraad" is echter vergelijkbaar met file io, dus of je er wat aan hebt weet ik niet.

Experience has taught me that interest begets expectation, and expectation begets disappointment, so the key to avoiding disappointment is to avoid interest.


  • Down
  • Registratie: Februari 2005
  • Laatst online: 23:09
De file connection API is een optional package, ik weet niet of je die mag gebruiken maar je moet inderdaad gewoon een recordstore gebruiken.

Voorbeeld

Mother north, how can they sleep while their beds are burning?


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Imodium schreef op donderdag 04 januari 2007 @ 00:57:
De file connection API is een optional package, ik weet niet of je die mag gebruiken maar je moet inderdaad gewoon een recordstore gebruiken.

Voorbeeld
Hoezo zou ik die niet mogen gebruiken dan? Ik heb gekeken op die website, waar een voorbeeld stond van een recordstore. Maar dat moet ik dus in mijn MIDlet bestand zetten? Maar hoe krijg ik dat iets wat in mijn GameCanvas staat in die RMS/RecordStore?

My Laptop Specificaties vs My Desktop Specificaties


  • vegterb
  • Registratie: Juni 2001
  • Laatst online: 21-11 12:34

vegterb

[ZzZ]Vighter

Topicstarter
Ik heb het nu werkende met de fileconnection API, alleen wordt er nog continu gevraagd of het systeem toegang mag tot het bestand systeem.

Ik heb begrepen dat ik een MIDlet moet signen, door in de WTK in 'Settings' bij 'permissions' dingen toe te voegen. Hier heb ik bij MIDlet-permissions neergezet:
javax.microedition.io.Connector.file.read
javax.microedition.io.Connector.file.write

Maar dat werkt nog niet -O-
Dit had ik ook nog gevonden MIDlet Signing, maar dat werkt dus niet omdat ik geen .jar bestanden heb.

[ Voor 68% gewijzigd door vegterb op 04-01-2007 16:55 ]

My Laptop Specificaties vs My Desktop Specificaties

Pagina: 1