java - Java FX 移动形状
问题描述
我想问一下您对如何解决我的问题有任何想法吗?我想要实现的是将事物朝一个方向移动,但在设置的 y 位置保持生成实例
public class Balony extends Canvas {
Group root;
GraphicsContext gc;
Timeline t;
Scene scene;
int poz = 100;
Color farba=Color.RED;
Random rand = new Random();
int rychlost= rand.nextInt(20 - 2 + 1) + 2;
public Balony(Scene scene){
super(800,1000);
this.root = root;
this.scene = scene;
gc = this.getGraphicsContext2D();
setLayoutY(100);
t = new Timeline(new KeyFrame(Duration.millis(100),e->chod()));
t.setCycleCount(Animation.INDEFINITE);
t.play();
}
private void kresli(){
farebnost();
spawn();
gc.setFill(farba);
gc.fillOval(poz-40, scene.getHeight()-100, 80, 100);
gc.setFill(Color.BLACK);
gc.fillRect(poz, scene.getHeight(), 2, 100);
}
public void chod(){
kresli();
setLayoutY(getLayoutY()-rychlost);
}
public void spawn(){
int miesto = rand.nextInt((int) (scene.getWidth() - 50 + 1)) + 50;
poz = miesto;
}
public void farebnost(){
int colour= rand.nextInt(10 - 1 + 1) + 1;
switch (colour) {
case 1: farba = Color.RED; break;
case 2: farba = Color.GREEN; break;
case 3: farba = Color.BLUE; break;
case 4: farba = Color.YELLOW; break;
case 5: farba = Color.ORANGE; break;
case 6: farba = Color.BROWN; break;
case 7: farba = Color.YELLOWGREEN; break;
case 8: farba = Color.ORANGERED; break;
case 9: farba = Color.HOTPINK; break;
case 10: farba = Color.VIOLET; break;
}
}
这是我为解释我的问题而制作的一个简单程序,当产生新气球时,它们的 y 位置向上移动,但我想保持新实例向下+使它们以不同的速度向上移动(我相信这可以通过移动来解决进入我的产卵空间的整个过程,所以这并不重要)。
解决方案
- 您需要为单个气球引入一个类,该类将存储它的位置、速度和颜色。让我们称之为
Balon
。 - 在课堂内
Balony
,你应该存储List<Balon> balony;
- 在
chod()
方法结束时,您应该遍历balony
,并更新每个 的位置Balon
。balon.setPoz(balon.getPoz() + balon.getRychlost());
- 其他方法(例如
kresli()
)将不得不相应更改,以绘制气球列表,而不是单个气球
推荐阅读
- android - Android:使用文本观察器编辑文本中每 10 位数字后的空格
- google-chrome - 本地机器上的 Chrome 无头屏幕截图
- php - PHP Yii1 语法错误或访问冲突:1064
- php - 从与 PHP 一起使用的 HTML 模板中获取内部 html
- android - 密码函数:OPENSSL_internal:BAD_DECRYPT in android Oreo
- mysql - 对匹配条件sql的2个表的某些列求和
- sql - 在这个例子中我应该使用复合主键吗?
- javascript - 无法将选定的选项卡值获取到 angular.js 中的控制器
- python - longpolling odoo 11 未显示在日志中
- firebase - 将 PWA 安装到主屏幕后,我的通知徽章图标未显示