Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在AnimationTimer循环JavaFX中创建对象生成器_Java_Javafx - Fatal编程技术网

如何在AnimationTimer循环JavaFX中创建对象生成器

如何在AnimationTimer循环JavaFX中创建对象生成器,java,javafx,Java,Javafx,我正在JavaFX上制作简单的宇宙飞船游戏。我有一个宇宙飞船类,我想在我的主游戏循环中,在随机的起始位置(例如间隔5秒)制作这个类的随机对象。我尝试对任务使用Timer schedule()方法。问题是我无法获得飞船的清晰图像,因为不断循环,它消失并显示在另一点上。有人能帮我建议一下如何处理这件事吗 我的游戏循环: newanimationtimer(){ @凌驾 公共无效句柄(长currentnotime){ 双t=(currentNanoTime-startNanoTime)/100000

我正在JavaFX上制作简单的宇宙飞船游戏。我有一个宇宙飞船类,我想在我的主游戏循环中,在随机的起始位置(例如间隔5秒)制作这个类的随机对象。我尝试对任务使用Timer schedule()方法。问题是我无法获得飞船的清晰图像,因为不断循环,它消失并显示在另一点上。有人能帮我建议一下如何处理这件事吗

我的游戏循环:

newanimationtimer(){
@凌驾
公共无效句柄(长currentnotime){
双t=(currentNanoTime-startNanoTime)/100000000.0;
double xMoving=((100*t)%(canvas.getWidth()+100));
双x=232+128*数学cos(t);
双y=232+128*数学sin(t);
//背景图像清除画布
gc.drawImage(空格,0,0);
gc.drawImage(地球,x,y);
gc.drawImage(sun,196,196);
//画飞碟
绘制图像(ufo.getFrame(t),100,25);
//绘制宇宙飞船
太空船生成(新太空船(太空船图像arr,0.100,gc,t,xMoving-100,(随机数+150));
//定时表
定时器=新定时器();
timer.schedule(新TimerTask(){
@凌驾
公开募捐{
太空船生成(新太空船(太空船图像arr,0.100,gc,t,xMoving-100,(随机数+230));
}
}, 5000);
}
}.start()这就是罪魁祸首

SpaceShip.generate(new SpaceShip(spaceShipImageArr, 0.100, gc, t, xMoving - 100, (randomNum + 150)));
基本上,在每个帧中创建一个新的
太空船实例。闪烁的图像是由一次又一次地创造太空船造成的。那不行

您需要在游戏循环之外创建这些对象并存储它们的引用:

SpaceShip mySpaceShip = new SpaceShip(spaceShipImageArr, 0.100, gc, t, xMoving - 100, (randomNum + 150));
在游戏循环中,您只需更新演员的位置(该部分缺失),并在新位置继续绘制他们

SpaceShip.generate(mySpaceShip);

旁注:您可以完全删除
generate
方法,将
drawShip
公开,将其重命名为
draw
,然后只需调用
mySpaceShip.draw()
—您的方法的作用将更加明显。对象自行绘制是完全可以接受的。

是否将飞船实例存储在列表或其他集合中?如果您不显示有问题的代码,我们将无法帮助您。太好了。谢谢,这对我很有帮助。