作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让文本变大,然后在几秒钟后再次变小,并且它会不断重复变大然后变小。我应该如何编码?
//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/
我是一名优秀的程序员,十分优秀!