我想让文字大一点,然后在几秒后再次变小,它会一直变得大而小。我该如何编码呢?
// 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();
}
}
答案 0 :(得分:1)
当然有多种方法可以实现这一点,但是您可以创建一个变量,该变量包含字体大小应该变大或变小的变量。在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();
}
}