旋转风车

实现效果

这样的一个风车不断均匀的顺时针旋转。

实现代码

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几个简单动画——旋转风车、运动的圆相关推荐

  1. 用JavaFX几个简单动画——旋转风车、运动的圆

    旋转风车 实现效果 这样的一个风车不断均匀的顺时针旋转. 实现代码 import javafx.animation.Animation; import javafx.animation.Interpo ...

  2. java fx fxml界面_使用 JavaFX 2.0 FXML 呈现企业应用程序的 UI

    使用 JavaFX 2.0 FXML 呈现企业级应用程序 UI 作者:James L. Weaver 使用 FX 标记语言的强大功能定义企业级应用程序的 UI. 2012 年 6 月发布 下载: :示 ...

  3. java编写应用程序_为您的Java应用程序编写数据驱动的测试

    java编写应用程序 JUnit是一个功能非常强大的测试框架,它不仅为其用户提供了编写快速简便的测试的功能,而且还为用户提供了扩展它并使其按其期望的方式工作的机会. 在JUnit之上构建了许多框架,这 ...

  4. java编写布局文件_鸿蒙OS利用JAVA编写的布局实践练习

    鸿蒙OS利用JAVA编写的布局实践练习 鸿蒙OS利用JAVA编写的布局实践练习 目录 JAVA UI框架 利用JAVA代码实现一个简单的布局 利用xml实现上述布局 JAVA UI框架 ??应用的Ab ...

  5. java编写应用程序_使用Java API编写应用程序

    java编写应用程序 总览 介绍 DB2JSON可用于DB2 Linux,Unix和Windows 10.5以及用于z / OS V3.1的IBM DB2 Accessories Suite与DB2 ...

  6. 用java编写打印时间_编写一个java程序,读取系统时间,然后将时间用中文输出...

    展开全部 import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.util.Calendar; ...

  7. java编写k线_用Java绘制K线 (转)

    ---- Java语言中的Applet(Java小程序)和Application(Java应用程序)是在结构和功能上都存在很大差异的两种不同的编程方式.Applet应用于Web页上,可做出多姿多彩的页 ...

  8. Java编写图像浏览器_浏览器下载图像(JAVA代码)

    03-07阅读8103 简介: JavaWeb下载文件通常分为两种类型,一种是浏览器可以识别的文件类型,例如.txt,.excel,.zip等,可以通过使用以下链接来实现标签,但图片下载确实很麻烦. ...

  9. 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 ...

最新文章

  1. 一种在未来互联网中的面向用户的云操作系统体系
  2. 玩转Spring——Spring IOC/DI
  3. BC 2015在百度之星程序设计大赛 - 预赛(1)(矩形区域-旋转卡)
  4. c#万能视频播放器(附代码)
  5. 使用遇到的问题_喷淋塔使用过程中遇到的问题以及解决方法
  6. TensorFlow学习【1】--TensorFlow下载安装
  7. vmware不显示usb图标解决办法
  8. Unity 2018升级2020后XR报错error CS0619: ‘XRDevice.isPresent‘ is obsolete
  9. 获取前N天/月/年的日期
  10. INNODB记录格式
  11. H5手机休闲游戏开发商有哪些?带你看遍北京游戏研发公司
  12. 我对M4A文件格式的理解
  13. Java代码混淆案例(附反编译工具)
  14. 计算机应用基础最要考点,北京自考计算机应用基础答题及时存盘
  15. 通过FTP以及SMB实现电脑,手机,ipad的文件同步访问
  16. DSP原理学习笔记--第七章--增强直接存储器访问(EDMA)
  17. 索尼WH-1000XM4 win11PC下声音音质差的解决方案
  18. 使用workbench导入excel中的数据
  19. 计算机教室消防说明,计算机教室消防制度.doc
  20. oppo手机邮件显示无法连接服务器,(oppo手机邮箱设置方法.doc

热门文章

  1. 网络黑客攻防学习平台之基础关第十一题
  2. 哪个大学有计算机专业博士授权,哪些学校有计算机应用博士点
  3. 联想计算机电源维修,台式联想电脑,主机电源灯不亮是怎么回事,应该怎么维修...
  4. mp3、amr、wav三种音频格式时长获取
  5. Pytorch 、torchvision、Tensorflow安装
  6. JetBrains 在中国被频繁破解,官方是如何看待的
  7. 如果你要读一本真正普及“人工智能”的读物 | 赠书
  8. ssm+vue+elementUI 基于微信小程序的游戏美术外包管理信息系统-#毕业设计
  9. 清华大学刘知远:知识指导的自然语言处理
  10. 服务器突然Out of memory的问题排查