Anzeige:
Ergebnis 1 bis 8 von 8

Thema: TRANS_MIRROR am gleichen Ort

  1. #1
    Registrierter Benutzer Avatar von Paul Kemp
    Registriert seit
    04.12.2007
    Beiträge
    34

    TRANS_MIRROR am gleichen Ort

    Hallo!

    Ich bin ein Java-Neuling und probiere mich gerade am umprogrammieren eines Java ME Beispieles. Dabei stosse ich auf folgendes Problem:

    Wenn die entsprechende Links-Taste gedrückt wird soll sich die Spielfigur (hier genannt "Annel") umdrehen. Dafür werden folgende "Zeilen" benutzt:

    PHP-Code:
    if ((keyStates GameCanvas.LEFT_PRESSED) != 0) {
                
    Annel.move(-speed0);
                
    Annel.setTransform(Sprite.TRANS_MIRROR); 
    Wenn sich nun die Spielfigur durch einmaliges drücken umdreht dann steht sie aber nicht mehr an der gleichen stellen sondern um eine Position nach links gerückt (äquivalent bei Drehung von links nach rechts). Wie schaffe ich es, dass sich die Figur beim ersten Drücken der Taste nicht bewegt.

    Bitte sagt mir bescheid falls ihr weitere Informationen benötigt. Vielen Dank und viele Grüße!!!

    Frank aka Paul Kemp
    LaTeX Anfänger, aber Anwender
    Java und HTML Neuling
    AutoIt-er und C/C++-ler
    ... und überhaupt neugierig

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Lass halt mal das
    Code:
    Annel.move(-1 * speed, 0);
    weg
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer Avatar von Paul Kemp
    Registriert seit
    04.12.2007
    Beiträge
    34
    Das hab ich auch schon überlegt, aber dann kann ich die Spielfigur ja gar nicht mehr nach links bewegen.
    LaTeX Anfänger, aber Anwender
    Java und HTML Neuling
    AutoIt-er und C/C++-ler
    ... und überhaupt neugierig

  4. #4
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    dann musst du wohl den state der Figur speichern und überprüfen:
    Code:
    class Figur {
    	public enum Direction {
    		LEFT,
    		RIGHT,
    	};
    
    	public Direction direction;
    
    	// alles andere was die Figur so können muss...
    }
    Dann beim keyPressed auch noch überprüfen was die Figur für eine Direction gespeichert hat:
    Code:
    if ((keyStates & GameCanvas.LEFT_PRESSED) != 0) {
    	if(Annel.direction != Figur.Direction.LEFT) {
    		Annel.direction = Figur.Direction.LEFT;
    	}
    	else {
    		Annel.move(-1 * speed, 0);
    	}
    	Annel.setTransform(Sprite.TRANS_MIRROR);
    HTH jeebee
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  5. #5
    Registrierter Benutzer Avatar von Paul Kemp
    Registriert seit
    04.12.2007
    Beiträge
    34
    Ok vielen Dank schon einmal für diesen Tip. Ich hatte gehofft, dass geht auch einfach, indem ich die Figur über die Mitte spiegel und nicht am Rand des Sprites. So etwas ist wohl nicht möglich?!?!?!
    LaTeX Anfänger, aber Anwender
    Java und HTML Neuling
    AutoIt-er und C/C++-ler
    ... und überhaupt neugierig

  6. #6
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Das Spiegeln selbst würde wohl an Ort passieren, denn so wie dein Code aussieht wird ja setTransform() jedesmal aufgerufen, wenn du einen Schritt nach links machst. Das Problem ist, dass move() auch schon beim ersten Schritt nach links aufgerufen wird.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  7. #7
    Registrierter Benutzer Avatar von Paul Kemp
    Registriert seit
    04.12.2007
    Beiträge
    34
    Ok, das klingt logisch. Noch eine letzte Frage (sorry!!!). Ich habe versucht dein Bsp. auszuprobieren. Folgende Fehlermeldung zeigt mir NetBeans an:
    enums are not supported in -source 1.3
    (use -source 5 or higher to enable enums)

    as of release 5, enum is a keyword and not be used for identifier
    (use -source 5 or higher to enable use enums as keyword)
    Wie gesagt bin noch ein ziemlicher Anfänger. Mir sagt das nix. Was will man mir damit sagen und was muss ich ändern?

    Tausend Dank!!!!!!!
    LaTeX Anfänger, aber Anwender
    Java und HTML Neuling
    AutoIt-er und C/C++-ler
    ... und überhaupt neugierig

  8. #8
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Offensichtlich verwendet J2ME nur Sprachfeatures bis J2SE v1.3. Enums wurden aber erst mit J2SE 5 eingeführt... Das heisst du musst halt den Status der Spielfigur mittels einem Integer speichern:
    Code:
    class Figur {
        // directions
        public final int LEFT = 0;
        public final int RIGHT = 1;
        public int direction;
    }
    und dann im if:
    Code:
    if(Annel.direction != Figur.LEFT) {...}
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

Lesezeichen

Berechtigungen

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