2016-12-23 13 views
0

Hallo Stapelüberlauf Community, Dies ist meine erste Verwendung dieser Website. Also bitte Art ^^“ (Und sorry für die seltsamen Befehle, das ist eine Bibliothek meiner Schule verwendet. Leider gibt es in Deutsch)Eine Methode ausführen, während eine andere ausgeführt wird

ich die Bewegung if (dieTastatur.rechts()){... zum Laufen bringen wollte, während meine andere Methode this.erscheinen(); seine Arbeit tun ist dies möglich, wenn nicht, wie kann ich es ändern richtig funktioniert

Problem ist:.? ich die Kamera nicht bewegen kann, während die Blöcke auf mich

public void fuehreAus(){ 

    while(true){ 

     Klotz_Array[0].unsichtbar(); 
     Klotz_Array[1].unsichtbar(); 
     Klotz_Array[2].unsichtbar(); 
     Klotz_Array[3].unsichtbar(); 
     this.erscheinen(); 



     if(dieTastatur.rechts()){ 
      this.bewege_rechts(); 
      Sys.warte(3); 
     } 
     if(dieTastatur.links()){ 
      this.bewege_links(); 
      Sys.warte(15); 
     } 
     if(dieTastatur.oben()){ 
      this.bewege_oben(); 
      Sys.warte(3); 
     } 
     if(dieTastatur.unten()){ 
      this.bewege_unten(); 
      Sys.warte(3); 
     } 
    } 

} 


public void bewege_links(){ 
    if(dieTastatur.links()){ 
     dieKamera.setzePosition(-150,250,3000); 
     for(int a=0;a<=100;a++){ 
     } 
     Sys.warte(400); 
     dieKamera.setzePosition(0,250,3000); 
    } 
} 

public void bewege_rechts(){ 
    if(dieTastatur.rechts()){ 
     dieKamera.setzePosition(150, 250, 3000); 
     for(int a=0;a<=100;a++){ 
     } 
     Sys.warte(400); 
     dieKamera.setzePosition(0,250,3000);  
    } 
} 

public void bewege_oben(){ 
    if(dieTastatur.oben()){ 
     dieKamera.setzePosition(0,400,3000); 
     dieKamera.setzeBlickpunkt(0,400,-10); 
     for(int a=0;a<=100;a++){ 
     } 
     Sys.warte(400); 
     dieKamera.setzePosition(0,250,3000); 
     dieKamera.setzeBlickpunkt(0,250,-10); 
    } 
} 

public void bewege_unten(){ 
    if(dieTastatur.unten()){ 
     dieKamera.setzePosition(0,100,3000); 
     for(int a=0;a<=100;a++){ 
     } 
     Sys.warte(400); 
     dieKamera.setzePosition(0,250,3000); 
    } 
} 

    public void erscheinen(){ 
     while(!Klotz_Stack.isEmpty()){ 
      Klotz_Stack.top().bewege(); 
      Klotz_Stack.pop(); 
     } 
    } 

Und hier ist die Methode bewege sich bewegen aus der Klasse "Klotz"

public void bewege(){ 

    int a = (int)(Math.random() * 4) + 1; 

    if(a==1){ 
     Block1.setzeSichtbarkeit(true); 
     for(int b=0;b<=1000;b++){ 
      Block1.verschiebe(0,0,5); 
      Sys.warte(3); 
     } 
     Block1.loesche(); 
    } 
    if(a==2){ 
     Block3.setzeSichtbarkeit(true); 
     for(int b=0;b<=1000;b++){ 
      Block3.verschiebe(0,0,5); 
      Sys.warte(3); 
     } 
     Block3.loesche(); 
    } 
    if(a==3){ 
     Block2.setzeSichtbarkeit(true); 
     for(int b=0;b<=1000;b++){ 
      Block2.verschiebe(0,0,5); 
      Sys.warte(3); 
     } 
     Block2.loesche(); 
    } 
    if(a==4){ 
     Block4.setzeSichtbarkeit(true); 
     for(int b=0;b<=1000;b++){ 
      Block4.verschiebe(0,0,5); 
      Sys.warte(3); 
     } 
     Block4.loesche(); 
    } 


} 
public void unsichtbar(){ 
    Block1.setzeSichtbarkeit(false); 
    Block2.setzeSichtbarkeit(false); 
    Block3.setzeSichtbarkeit(false); 
    Block4.setzeSichtbarkeit(false); 
} 
+4

http://docs.oracle.com/javase/tutorial/essential/concurrency/ <- Das Java essentials Tutorial über Gleichzeitigkeit, Fäden usw. könnte ein guter Ort für Sie zu starten. –

Antwort

0

Zuerst die notwendige Import:

import java.util.concurrent.Executors; 

Dann können Sie Ihre feuhreAus Methode sofort einen neuen Thread wie so und zurück machen beginnen.

public void fuehreAus(){ 
    Executors.newSingleThreadExecutor().submit(new Runnable() { 
     @Override 
     public void run() { 
      while(true) { 
       Klotz_Array[0].unsichtbar(); 
       Klotz_Array[1].unsichtbar(); 
       Klotz_Array[2].unsichtbar(); 
       ... 
      } 
     } 
    }); 
} 
+0

Vielen Dank, es hat perfekt funktioniert! – Trynchen

Verwandte Themen