commit
8c1eb6f455
@ -0,0 +1,72 @@ |
||||
package jme3test.app; |
||||
|
||||
import com.jme3.app.SimpleApplication; |
||||
import com.jme3.material.Material; |
||||
import com.jme3.math.ColorRGBA; |
||||
import com.jme3.scene.Geometry; |
||||
import com.jme3.scene.shape.Box; |
||||
|
||||
/** |
||||
* @author john01dav |
||||
*/ |
||||
public class TestEnqueueRunnable extends SimpleApplication{ |
||||
private ExampleAsyncTask exampleAsyncTask; |
||||
|
||||
public static void main(String[] args){ |
||||
new TestEnqueueRunnable().start(); |
||||
} |
||||
|
||||
@Override |
||||
public void simpleInitApp(){ |
||||
Geometry geom = new Geometry("Box", new Box(1, 1, 1)); |
||||
Material material = new Material(getAssetManager(), "/Common/MatDefs/Misc/Unshaded.j3md"); |
||||
material.setColor("Color", ColorRGBA.Blue); //a color is needed to start with
|
||||
geom.setMaterial(material); |
||||
getRootNode().attachChild(geom); |
||||
|
||||
exampleAsyncTask = new ExampleAsyncTask(material); |
||||
exampleAsyncTask.getThread().start(); |
||||
} |
||||
|
||||
@Override |
||||
public void destroy(){ |
||||
exampleAsyncTask.endTask(); |
||||
super.destroy(); |
||||
} |
||||
|
||||
private class ExampleAsyncTask implements Runnable{ |
||||
private final Thread thread; |
||||
private final Material material; |
||||
private volatile boolean running = true; |
||||
|
||||
public ExampleAsyncTask(Material material){ |
||||
this.thread = new Thread(this); |
||||
this.material = material; |
||||
} |
||||
|
||||
public Thread getThread(){ |
||||
return thread; |
||||
} |
||||
|
||||
public void run(){ |
||||
while(running){ |
||||
enqueue(new Runnable(){ //primary usage of this in real applications would use lambda expressions which are unavailable at java 6
|
||||
public void run(){ |
||||
material.setColor("Color", ColorRGBA.randomColor()); |
||||
} |
||||
}); |
||||
|
||||
try{ |
||||
Thread.sleep(1000); |
||||
}catch(InterruptedException e){} |
||||
} |
||||
} |
||||
|
||||
public void endTask(){ |
||||
running = false; |
||||
thread.interrupt(); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue