gpt4 book ai didi

java - 如何让字体变大几秒后变小?

转载 作者:行者123 更新时间:2023-12-01 10:45:45 28 4
gpt4 key购买 nike

我想让文本变大,然后在几秒钟后再次变小,并且它会不断重复变大然后变小。我应该如何编码?

//DUMMY POST nfinity Blade 是一款由 Chair Entertainment 和 Epic Games 开发的格斗游戏,于 2010 年 12 月 9 日通过 App Store 发布。它是第一款在虚幻引擎上运行的 iOS 视频游戏。游戏中,无名玩家角色在一座废弃城堡中进行一系列的一对一战斗,面对不朽的神王。战斗时,玩家滑动屏幕进行攻击和格挡,点击屏幕进行闪避和格挡敌人的攻击。胜利或失败后,玩家会以角色的后代的身份重新开始游戏,并拥有相同的元素和经验等级。该游戏由 12 人团队开发,旨在演示新 iOS 版本的虚幻引擎。四个免费扩展添加了新设备、结局和游戏模式。该游戏在//DUMMYPOST 中获得了 160 万美元

import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class FontSizeAnimation extends JPanel implements ActionListener {
Timer timer;
int x = 1;
float alpha = 1;

public FontSizeAnimation() {
timer = new Timer(4, this);
timer.setInitialDelay(500);
timer.start();
}

public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;

Font font = new Font("Dialog", Font.PLAIN, x);
g2d.setFont(font);

FontMetrics fm = g2d.getFontMetrics();
String s = "Java";

int w = (int) getSize().getWidth();
int h = (int) getSize().getHeight();

int stringWidth = fm.stringWidth(s);

g2d.drawString(s, (w - stringWidth) / 2, h / 2);
}

public static void main(String[] args) {
JFrame frame = new JFrame("FontSizeAnimation");
frame.add(new FontSizeAnimation());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
x += 1;
alpha -= 0.0001;
repaint();
}


}

最佳答案

当然,有多种方法可以实现此目的,但您可以创建一个变量来控制字体大小是否应该变大或变小。在 actionPerformed() 方法中更新该变量,然后根据变量的值更改字体大小。以下是您的代码示例(单击 here 进行预览,在帖子中会分散注意力):

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class FontSizeAnimation extends JPanel implements ActionListener {
Timer timer;
int x = 1;
int lastX = 1;
float alpha = 1;
boolean bigger;

public FontSizeAnimation() {
timer = new Timer(4, this);
timer.setInitialDelay(500);
timer.start();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;

Font font = new Font("Dialog", Font.PLAIN, x);
g2d.setFont(font);

FontMetrics fm = g2d.getFontMetrics();
String s = "Java";

int w = (int) getSize().getWidth();
int h = (int) getSize().getHeight();

int stringWidth = fm.stringWidth(s);

g2d.drawString(s, (w - stringWidth) / 2, h / 2);
}

public static void main(String[] args) {
JFrame frame = new JFrame("FontSizeAnimation");
frame.add(new FontSizeAnimation());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if (x > 50) {
bigger = false;
} else if (x < 2) {
bigger = true;
}
if (bigger) {
x++;
} else {
x--;
}
alpha -= 0.0001;
repaint();
}

}

关于java - 如何让字体变大几秒后变小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182939/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com