我是Java编程的新手,正在制作一个有背景图像和太阳的项目.太阳根据现实生活中的时间改变颜色.
我的代码如下:
package demos;
import processing.core.*;
import java.time.LocalDateTime;
import java.util.TimerTask;
public class Trial extends PApplet{
String URL="http://cseweb.ucsd.edu/~minnes/palmTrees.jpg";
PImage backgroundImg;
public void setup(){
size(200,200);
backgroundImg = loadImage(URL,"jpg");
}
public void draw(){
int hour = LocalDateTime.now().getHour();
int minute = LocalDateTime.now().getMinute();
switch(hour){
case 13:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(238,238,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 14:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(205,205,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 15:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,215,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 16:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(238,201,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 17:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,193,37);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 18:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(205 ,133,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 19:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,0,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 20:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(211,211,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 21:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(169,169,169);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 22:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(105,105,105);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 23:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(79,79,79);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 00:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(0,0,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 1:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(79,79,79);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 2:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(105,105,105);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 3:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(169,169,169);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 4:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(211,211,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 5:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,0,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 6:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(205,133,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 7:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,193,37);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 8:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(121,29,121);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 9:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(111,209,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 10:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(230,209,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 11:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,200,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
case 12:
{
backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,209,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
default:
{ backgroundImg.resize(0 ,height);
image( backgroundImg , 0,0);
fill(255,209,0);
ellipse(width/4,height/5,width/5,height/5);
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在它只执行一次draw方法来改变太阳的颜色.如果小时改变,我需要绘制方法来执行每分钟以改变颜色.
Chr*_*örz 12
你可以使用ScheduledExecutorService:
首先,您需要创建一个runnable并将您的方法放入其中:
Runnable drawRunnable = new Runnable() {
public void run() {
draw();
}
};
Run Code Online (Sandbox Code Playgroud)
然后安排执行者:
ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
exec.scheduleAtFixedRate(drawRunnable , 0, 1, TimeUnit.MINUTES);
Run Code Online (Sandbox Code Playgroud)
这样它将每分钟执行一次.
只需更改时间或TimeUnit更改执行之间的时间即可.
| 归档时间: |
|
| 查看次数: |
6797 次 |
| 最近记录: |