Avatar billede jannek_ek Nybegynder
20. september 2005 - 21:46 Der er 5 kommentarer og
1 løsning

hent fra tråd

halløj
jeg vil gerne kunne hente en variabel fra en tråd, men ved ikke hvordan det skal gøres...
har prøvet at behandle tråden som en klasse (x = tråd.objekt;) men det giver fejl... så hvordan skal det fikses?
Avatar billede mikkelbm Nybegynder
20. september 2005 - 22:39 #1
Du laver vel en public metode på dit tråd-objekt?

public class MyThread extends Thread
{
    private int value;
    private boolean running;

    public MyThread ()
    {
      value = 0;
      running = true;
      this.start();
    }

    public void run()
    {
        while (running)
        {
            value++;
            try { Thread.sleep (1000); } catch (Exception e) {}
        }
    }

    public int getValue ()
    {
        return value;
    }
}


.....


MyThread thread = new MyThread ();
int value = thread.getValue ();
....
senere:
.....
int value = thread.getValue ();
Avatar billede jannek_ek Nybegynder
21. september 2005 - 16:25 #2
hmm nej virker ikke...

jeg skal hente kassen (igennem hent())

import java.awt.*;
import java.awt.event.*;

public class vindue extends Frame
{
  public Thread pers = new Thread(new spiller(this));
  public Thread tid;
  public boolean igang = false;
  public kasse k;

  public void paint(Graphics g)
  {
    if (!igang)
    {
      pers.start();
      igang = true;
    }
    tid = new Thread(new timer(this));
    tid.start();
    Insets in = getInsets();
    g.translate(in.left, in.top);
    k = pers.hent();
    k.render(g);
  }
}



import java.awt.*;
import java.awt.event.*;

public class spiller implements Runnable
{
  public kasse k = new kasse(new Point(100, 100), 1, "kasse 1");
  public vindue f;

  public spiller(vindue f)
  {
    this.f = f;
  }

  public void run()
  {
    f.addKeyListener(new tast());
  }

  public kasse hent()
  {
    return k;
  }

  public class tast extends KeyAdapter
  {
    public void keyPressed(KeyEvent e)
    {
      try
      {
        Thread.sleep(50);
      } catch (Exception ex)
      {}
      if (e.getKeyCode() == KeyEvent.VK_UP)
      {
        k.bevæg(1);
      } else if (e.getKeyCode() == KeyEvent.VK_DOWN)
      {
        k.bevæg(2);
      } else if (e.getKeyCode() == KeyEvent.VK_RIGHT)
      {
        k.bevæg(3);
      } else if (e.getKeyCode() == KeyEvent.VK_LEFT)
      {
        k.bevæg(4);
      }
    }
  }
}
Avatar billede mikkelbm Nybegynder
21. september 2005 - 16:31 #3
Du holder jo heller ikke på din instans af spiller.

Du bliver nødt til at have en variabel som holder på din spiller. Og ikke bare bruge (new spiller (this))

private spiller spil;
...

spil = new spiller (...);
Avatar billede jannek_ek Nybegynder
21. september 2005 - 16:35 #4
når sådan :P jes nu virker det
Avatar billede mikkelbm Nybegynder
21. september 2005 - 16:39 #5
Så vil jeg tillade mig at smide et svar... :)
Avatar billede jannek_ek Nybegynder
21. september 2005 - 16:40 #6
Jamen det skal du da være velkommen til, og mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester