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