java编写旋转风车_用JavaFX几个简单动画——旋转风车、运动的圆
旋转风车
实现效果
这样的一个风车不断均匀的顺时针旋转。
实现代码
import javafx.animation.Animation;
import javafx.animation.Interpolator;
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.util.Duration;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws InterruptedException {
Pane pane = new Pane(); // 创建一个面板
// 画一个圆,并将圆的圆心和半径和面板大小进行绑定,确保圆永远显示在中间,设置边缘为黑色,内部为白色
Circle circle = new Circle();
circle.centerXProperty().bind(pane.widthProperty().divide(2));
circle.centerYProperty().bind(pane.heightProperty().divide(2));
circle.radiusProperty().bind(pane.widthProperty().divide(3));
circle.setStroke(Color.BLACK);
circle.setFill(Color.WHITE);
// 画第一片扇形,同样的方式固定圆心,根据圆的半径来改变扇形半径,使其与圆的边沿存在间隙
Arc arc1 = new Arc();
arc1.centerXProperty().bind(circle.centerXProperty());
arc1.centerYProperty().bind(circle.centerYProperty());
arc1.radiusXProperty().bind(circle.radiusProperty().divide(1.02));
arc1.radiusYProperty().bind(circle.radiusProperty().divide(1.02));
arc1.setStartAngle(30); // 定义弧的起始角度
arc1.setLength(60); // 弧的角度范围
arc1.setFill(Color.RED);
arc1.setType(ArcType.ROUND); // 弧的闭合类型['ArcType.OPEN', 'ArcType.CHORD']
Arc arc2 = new Arc();
arc2.centerXProperty().bind(circle.centerXProperty());
arc2.centerYProperty().bind(circle.centerYProperty());
arc2.radiusXProperty().bind(circle.radiusProperty().divide(1.02));
arc2.radiusYProperty().bind(circle.radiusProperty().divide(1.02));
arc2.setStartAngle(30+90);
arc2.setLength(60);
arc2.setFill(Color.RED);
arc2.setType(ArcType.ROUND);
Arc arc3 = new Arc();
arc3.centerXProperty().bind(circle.centerXProperty());
arc3.centerYProperty().bind(circle.centerYProperty());
arc3.radiusXProperty().bind(circle.radiusProperty().divide(1.02));
arc3.radiusYProperty().bind(circle.radiusProperty().divide(1.02));
arc3.setStartAngle(30+180);
arc3.setLength(60);
arc3.setFill(Color.RED);
arc3.setType(ArcType.ROUND);
Arc arc4 = new Arc();
arc4.centerXProperty().bind(circle.centerXProperty());
arc4.centerYProperty().bind(circle.centerYProperty());
arc4.radiusXProperty().bind(circle.radiusProperty().divide(1.02));
arc4.radiusYProperty().bind(circle.radiusProperty().divide(1.02));
arc4.setStartAngle(30+270);
arc4.setLength(60);
arc4.setFill(Color.RED);
arc4.setType(ArcType.ROUND);
// 将以上所有的结点加入面板当中
pane.getChildren().addAll(circle, arc1, arc2, arc3, arc4);
// 创建一个旋转的过渡动画,构建方法中,第一个参数指定完成一次旋转所需要的时间,第二个参数是旋转的对象
RotateTransition rt = new RotateTransition(Duration.seconds(1), pane);
rt.setByAngle(360); // 设置旋转的角度
rt.setCycleCount(Animation.INDEFINITE); // 设置旋转次数,我们需要旋转无数次
rt.setInterpolator(Interpolator.LINEAR); // 控制每个过渡周期的加速和减速时间,设置为匀速
rt.play(); // 开始播放动画
// 将面板加入屏幕,并设置屏幕尺寸和标题
Scene screen = new Scene(pane, 500, 500);
primaryStage.setTitle("byack");
primaryStage.setScene(screen);
primaryStage.show();
}
}
运动的圆
实现效果
实现代码
import javafx.animation.Animation;
import javafx.animation.PathTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws InterruptedException {
Pane pane = new Pane(); // 创建一个面板
Circle circle = new Circle();
circle.setCenterX(50);
circle.setCenterY(150);
circle.setRadius(50);
circle.setStroke(Color.BLACK);
circle.setFill(Color.GREEN);
pane.getChildren().add(circle);
// 创建路径转变,其实坐标为(50, 150),终点坐标为(450, 150)
PathTransition pathTransition=new PathTransition(Duration.seconds(2), new Line(50, 150, 450, 150), circle);
pathTransition.setCycleCount(Animation.INDEFINITE);
pathTransition.play();
// 将面板加入屏幕,并设置屏幕尺寸和标题
Scene screen = new Scene(pane, 500, 300);
primaryStage.setTitle("byack");
primaryStage.setScene(screen);
primaryStage.show();
}
}
参考资料
https://docs.oracle.com/javafx/2/api/javafx/animation/RotateTransition.html
java编写旋转风车_用JavaFX几个简单动画——旋转风车、运动的圆相关推荐
- 用JavaFX几个简单动画——旋转风车、运动的圆
旋转风车 实现效果 这样的一个风车不断均匀的顺时针旋转. 实现代码 import javafx.animation.Animation; import javafx.animation.Interpo ...
- java fx fxml界面_使用 JavaFX 2.0 FXML 呈现企业应用程序的 UI
使用 JavaFX 2.0 FXML 呈现企业级应用程序 UI 作者:James L. Weaver 使用 FX 标记语言的强大功能定义企业级应用程序的 UI. 2012 年 6 月发布 下载: :示 ...
- java编写应用程序_为您的Java应用程序编写数据驱动的测试
java编写应用程序 JUnit是一个功能非常强大的测试框架,它不仅为其用户提供了编写快速简便的测试的功能,而且还为用户提供了扩展它并使其按其期望的方式工作的机会. 在JUnit之上构建了许多框架,这 ...
- java编写布局文件_鸿蒙OS利用JAVA编写的布局实践练习
鸿蒙OS利用JAVA编写的布局实践练习 鸿蒙OS利用JAVA编写的布局实践练习 目录 JAVA UI框架 利用JAVA代码实现一个简单的布局 利用xml实现上述布局 JAVA UI框架 ??应用的Ab ...
- java编写应用程序_使用Java API编写应用程序
java编写应用程序 总览 介绍 DB2JSON可用于DB2 Linux,Unix和Windows 10.5以及用于z / OS V3.1的IBM DB2 Accessories Suite与DB2 ...
- 用java编写打印时间_编写一个java程序,读取系统时间,然后将时间用中文输出...
展开全部 import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.util.Calendar; ...
- java编写k线_用Java绘制K线 (转)
---- Java语言中的Applet(Java小程序)和Application(Java应用程序)是在结构和功能上都存在很大差异的两种不同的编程方式.Applet应用于Web页上,可做出多姿多彩的页 ...
- Java编写图像浏览器_浏览器下载图像(JAVA代码)
03-07阅读8103 简介: JavaWeb下载文件通常分为两种类型,一种是浏览器可以识别的文件类型,例如.txt,.excel,.zip等,可以通过使用以下链接来实现标签,但图片下载确实很麻烦. ...
- java编写数字金字塔_在java中的数字金字塔 (numbers pyramid in java)
最佳答案 英文原文 It might be a bit simpler to write and read if you make a separate method to print each li ...
最新文章
- 一种在未来互联网中的面向用户的云操作系统体系
- 玩转Spring——Spring IOC/DI
- BC 2015在百度之星程序设计大赛 - 预赛(1)(矩形区域-旋转卡)
- c#万能视频播放器(附代码)
- 使用遇到的问题_喷淋塔使用过程中遇到的问题以及解决方法
- TensorFlow学习【1】--TensorFlow下载安装
- vmware不显示usb图标解决办法
- Unity 2018升级2020后XR报错error CS0619: ‘XRDevice.isPresent‘ is obsolete
- 获取前N天/月/年的日期
- INNODB记录格式
- H5手机休闲游戏开发商有哪些?带你看遍北京游戏研发公司
- 我对M4A文件格式的理解
- Java代码混淆案例(附反编译工具)
- 计算机应用基础最要考点,北京自考计算机应用基础答题及时存盘
- 通过FTP以及SMB实现电脑,手机,ipad的文件同步访问
- DSP原理学习笔记--第七章--增强直接存储器访问(EDMA)
- 索尼WH-1000XM4 win11PC下声音音质差的解决方案
- 使用workbench导入excel中的数据
- 计算机教室消防说明,计算机教室消防制度.doc
- oppo手机邮件显示无法连接服务器,(oppo手机邮箱设置方法.doc
热门文章
- 网络黑客攻防学习平台之基础关第十一题
- 哪个大学有计算机专业博士授权,哪些学校有计算机应用博士点
- 联想计算机电源维修,台式联想电脑,主机电源灯不亮是怎么回事,应该怎么维修...
- mp3、amr、wav三种音频格式时长获取
- Pytorch 、torchvision、Tensorflow安装
- JetBrains 在中国被频繁破解,官方是如何看待的
- 如果你要读一本真正普及“人工智能”的读物 | 赠书
- ssm+vue+elementUI 基于微信小程序的游戏美术外包管理信息系统-#毕业设计
- 清华大学刘知远:知识指导的自然语言处理
- 服务器突然Out of memory的问题排查