Java语言程序设计——篇十五(5)

news2025/2/21 22:24:41

在这里插入图片描述
在这里插入图片描述

       🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

  • 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
    您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻

在这里插入图片描述

动画

  • 动画
    • 过渡动画
    • 淡出效果
      • 实战演练
    • 移动效果
      • 实战演练
    • 缩放效果
      • 实战演练
    • 旋转效果
      • 实战演练
          • 综合实例

动画

  • 在JavaFX中使用javafx.animation包中的API可实现动画。
  • JavaFX支持两种不同的方法来创建动画。
    ① 过渡动画
    ② 时间轴动画

过渡动画

  • 最简单的动画可以通过过渡效果实现,使用特定的过渡类,定义有关属性值,然后把它应用到某种节点,最后播放动画(调用过渡对象的play()方法)即可。
  • JavaFX提供了一些类方便地实现常见的动画效果。
  • 常用的过渡效果类:

javafx.animation.FadeTransition(淡出效果)
javafx.animation.PathTransition (路径变换效果)
javafx.animation.ScaleTransition(缩放效果)
javafx.animation.TranslateTransition(移动效果)
javafx.animation.RotateTransition(旋转效果)

  • 它们是javafx.animation.Animation的子类,该类中定义了动画的基本操作。

void play()
void playFromStart()
void pause()
void stop()

  • 该类中定义了一些属性:

autoReverse
rate
cycleCount(Timeline. INDEFINITE)
status

淡出效果

  • 使用FadeTransition类通过改变节点的透明度实现目标节点的逐渐消失效果,再通过setAutoReverse()方法实现节点的或隐或现效果。
  • 构造方法:

FadeTransition(Duration duration)指定一次转换持续的时间。可以使用new Duration(double millis)创建Duration实例。
常量INDEFINITE、ONE、UNKNOWN和ZERO来代表一个无限循环、1毫秒、未知以及0的持续时间。
FadeTransition(Duration duration, Node node)

实战演练

示例:使用文本实现淡入淡出。
在这里插入图片描述

  • 核心代码:
    在这里插入图片描述

移动效果

  • 使用PathTransition类可制作一个在给定时间内,节点沿着一条路径从一个端点到另外一个端点的移动动画。路径通过形状(Shape)对象指定。
  • PathTransition类的常用构造方法如下:
 PathTransition(Duration duration, Shape shape)
 PathTransition(Duration duration, Shape shape, Node node)
  • 属性:

duration
shape
node
orientation

实战演练

问题描述: 使用一个图片实现按路径移动同时播放音乐的效果。
在这里插入图片描述
核心代码:
在这里插入图片描述

缩放效果

  • 使用ScaleTransition类可以实现节点大小的缩放。
  • 构造方法:
    ScaleTransition(Duration duration)
    ScaleTransition(Duration duration, Node node)

实战演练

示例:在3秒内将一个文本的水平宽度和垂直高度增加80%。
核心代码:
在这里插入图片描述

旋转效果

  • 使用RotateTransition类可以实现对节点按指定的角度进行旋转。
  • 构造方法:
   RotateTransition(Duration duration)
   RotateTransition(Duration duration, Node node)
  • 通过setByAngle()方法设置节点旋转的角度,如果参数为正值沿顺时针旋转,负值则沿逆时针旋转。

实战演练

问题描述:
在3秒内将一个文本顺时针旋转360度。
在这里插入图片描述
核心代码:
在这里插入图片描述

综合实例

展示了如何对一个图片进行移动、缩放和旋转:

import javax.swing.*;  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.awt.geom.AffineTransform;  
  
public class AnimationExample extends JPanel implements ActionListener {  
    private Timer timer;  
    private double angle = 0;  
    private double scale = 1.0;  
    private int x = 0, y = 0;  
    private Image image;  
  
    public AnimationExample() {  
        // 加载图片  
        image = ImageIO.read(getClass().getResource("path/to/your/image.jpg"));  
  
        // 设置定时器,每50毫秒刷新一次  
        timer = new Timer(50, this);  
        timer.start();  
  
        setPreferredSize(new Dimension(800, 600));  
    }  
  
    @Override  
    protected void paintComponent(Graphics g) {  
        super.paintComponent(g);  
  
        // 转换Graphics对象为Graphics2D,以便使用更高级的图形功能  
        Graphics2D g2d = (Graphics2D) g;  
  
        // 应用旋转  
        g2d.rotate(Math.toRadians(angle), image.getWidth(null) / 2, image.getHeight(null) / 2);  
  
        // 应用缩放  
        g2d.scale(scale, scale);  
  
        // 应用平移  
        g2d.translate(x, y);  
  
        // 绘制图片  
        g2d.drawImage(image, 0, 0, null);  
  
        // 重置转换(如果需要再次绘制时保持初始状态)  
        g2d.setTransform(new AffineTransform());  
    }  
  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        // 更新角度、缩放和平移  
        angle += 2;  
        scale += 0.01; // 放大  
        x += 1;  
        y += 1;  
  
        // 重绘组件  
        repaint();  
    }  
  
    public static void main(String[] args) {  
        JFrame frame = new JFrame("Animation Example");  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        frame.add(new AnimationExample());  
        frame.pack();  
        frame.setLocationRelativeTo(null);  
        frame.setVisible(true);  
    }  
}
  • paintComponent方法中,我使用了Graphics2D的rotatescaletranslate方法来分别应用旋转、缩放和移动效果。
    AffineTransform的setTransform方法用于重置图形上下文的当前转换矩阵,这意呈着如果你在绘制多个对象时想要它们独立地应用不同的转换,你可能需要在每个对象绘制之前调用setTransform。但在本例中,因为我们只对一张图片进行所有操作,并且希望在每次repaint时都从头开始应用这些操作,所以重置转换矩阵不是必须的(尽管我在这里包含了它作为最佳实践)。
    通过调整Timer的延迟时间和actionPerformed方法中的增量值,你可以控制动画的速度和效果。
    博主用心写,读者点关注,互动传真情,知识不迷路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32嵌入式系统设计与开发拓展】——16_FreeRTOS操作系统

参考:链接: 正点原子 一、认识裸机和RTOS 裸机是无操作系统支持,程序直接运行在硬件上,开发者要自行处理硬件细节。早期单片机常采用,优点是性能和资源利用率高,缺点是开发难、可移植性差。RTOS 是实时操作系统&…

vscode导入的包裹代码名称没有颜色

问题描述:代码其他染色正常,但是例如import torchtorch没有颜色,虽然能够识别(ctrl左键能够点进去看到torch代码) 解决: 下载extention pylancefile->preferences->settings, 搜索Python: Language Server, 从default改成pylance

JAVA—IO流

存储数据的方案File和文件数据的操作IO流,学习字节流和字符流,了解框架和IO框架Commons IO 目录 1.File (1)创建对象 (2)常用方法 【1】判断类型,获取信息 【2】创建文件,删除…

LNMP学习

一、LNMP—web 1. 概述 LNMP/LAMP linux/windows/unix apache/nginx mysql/pgsql php/jsp 2. nginx部署及其平滑升级 实操 3. nginx七层负载均衡及算法 算法参考文档:https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/ 实操 4…

flv格式转换mp4怎么转换?5个软件帮助你自己快速进行格式转换

flv格式转换mp4怎么转换?5个软件让你从此快速转换格式不求别人 将FLV格式的视频转换为MP4格式可以通过使用以下五款软件来轻松实现。这些工具操作简便,能够快速高效地完成视频格式的转换,让你轻松应对各种视频格式需求。 口袋视频转换器 这…

网安新声 | 网易云音乐崩了:网络安全如何守护在线体验

网安加社区【网安新声】栏目,汇聚网络安全领域的权威专家与资深学者,紧跟当下热点安全事件、剖析前沿技术动态及政策导向,以专业视野和前瞻洞察,引领行业共同探讨并应对新挑战的策略与可行路径。 8月19日,#网易云音乐崩…

“休闲化“趋势增强,IAA手游出海如何抓住增长机遇?

进入存量时代,全球手游市场正面临严峻的挑战。数据显示,2023年 App Store 和 Google Play 的全球双端下载量同比下降10%,IAP 收入也同比减少2%。而作为大盘的支柱品类,中重度手游首当其冲。以 RPG 和 SLG 品类为例,虽然…

Halo个人博客Docker部署结合内网穿透为本地站点配置公网地址远程访问

文章目录 前言1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 前言 本文主要介绍如何在Cen…

常见计算机网络协议汇总(非常详细)从零基础入门到精通,看完这一篇就够了

文章目录 前言计算机网络五层模型回顾应用层协议 DNS协议:HTTP协议HTTPS协议 传输层协议 UDP协议TCP 网络层 IP协议ICMP协议 数据链路层 ARP协议 物理层整体的网络传输流程 1️⃣网络安全零基础入门 ① 学习路线② 路线对应学习视频 2️⃣视频配套资料&国内外网…

二分+前缀和+思维,CF 1902D - Robot Queries

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1902D - Robot Queries 二、解题报告 1、思路分析 不管怎么反转: 起点终…

【新品实测】C1001毫米波人体检测传感器来了!跌倒检测、睡眠监测更准确!

我们最近推出了一款全新的60G毫米波产品:C1001毫米波人体检测传感器。在这篇文章中,我们将深入测评这款产品的性能,并详细解析C1001毫米波人体检测传感器的功能和特性。 产品链接:C1001 60GHz毫米波人体检测传感器 原文链接&…

QML ScrollView 实现自动滚动到底部

先看效果,每当有新的日志,会自动添加到Text中,主要实现了ScrollView自动滑动到底部,显示最新的日志 目录 1.思路2.position分析 1.思路 在官网中scrollview并没有关于scrollview位置的设置 但是我们可以控制右边滑动条scrollbar的位置 注意position并不是一个高度数据,你可以…

Adobe Dreamweaver(DW)网页代码编辑器win/mac软件安装下载

一、Adobe DW软件概览 1.1 DW软件简介 Adobe Dreamweaver(简称DW)是一款功能强大的网页代码编辑器,由Adobe公司开发并维护。其全称为“Adobe Dreamweaver”,中文译为“梦想编织者”。DW集网页制作和管理网站于一身,支…

Allegro PCB位号重排反标原理图步骤

第一步:也是最重要的一步,备份整个工程文件夹。 防止操作过程中误操作导致工程文件出问题,万一出问题,没有备份,调整代价比较大 第二步:确认当前PCB和原理图的网表统一。 稳妥做法: 2a:原理图…

Linux入门——07 动静态库软硬连接

1.动静态库 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一…

如何在VMware ESXI中创建Linux虚拟机并实现异地SSH远程访问

目录 ⛳️推荐 前言 1. 在VMware ESXI中创建Ubuntu虚拟机 2. Ubuntu开启SSH远程服务 3. 安装Cpolar工具 4. 使用SSH客户端远程访问Ubuntu 5. 固定TCP公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

抛苹果卖银行 巴菲特到底怕什么?

文|琥珀食酒社 作者 | 积溪 停不下来、根本就停不下来 94岁的巴菲特还在疯狂卖股票 他到底是看到什么我们没看到的真相 对咱们普通人到底有没有参照价值? 我先说结论 你可以不相信有钱人的人品 但一定要知道有钱人的钱去哪儿了 尤其这个人还是巴…

机房环境监控系统

随着信息技术的飞速发展,数据中心作为信息处理的核心设施,其重要性日益凸显。数据中心内部通常包含大量的服务器、存储设备以及网络设备等关键基础设施,这些设备的稳定运行直接影响到业务的连续性和数据的安全性。因此,建立一个高…

插入排序(直接插入排序和希尔排序)

先写单趟,再写整体。 一、直接插入排序 1.基本思想 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经安排好的有序序列中,直到所有的记录插入完为止,得到一个新…

2024年【起重信号司索工(建筑特殊工种)】考试题及起重信号司索工(建筑特殊工种)免费试题

题库来源:安全生产模拟考试一点通公众号小程序 起重信号司索工(建筑特殊工种)考试题是安全生产模拟考试一点通总题库中生成的一套起重信号司索工(建筑特殊工种)免费试题,安全生产模拟考试一点通上起重信号司索工(建筑特殊工种)作业手机同步练习。2024年…