textsprite.java

来自「本代码为java编写的泡泡龙游戏」· Java 代码 · 共 81 行

JAVA
81
字号

import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Graphics;

//代表一个可操作、可显示的文字信息
public class TextSprite extends Sprite
{
	//保存可用的字体
	private GameFont font;
	//保存可显示的文本信息
	private String text;
	//保存能显示的最后一个字符的下标
	private int lastCharacter;
	
	public TextSprite(Rectangle spriteArea, GameFont font, String initialText)
	{
		super(spriteArea);
		
		this.font = font;
		this.text = initialText.toLowerCase();
		this.lastCharacter = findLastCharacter(text);
	}
	
	//查找能显示的最后一个字符的下标
	private int findLastCharacter(String text)
	{
		int fitsIn = getSpriteArea().width;
		int currentSize = 0;

		char[] array = text.toCharArray();
		
		for (int i=0 ; i<array.length ; i++)
		{                    
			currentSize += font.charSize(array[i])+font.SEPARATOR_WIDTH;
			
			if (currentSize >= fitsIn)
			{
				return i;
			}
		}
		
		return array.length-1;
	}
	
	public String getText()
	{
		return text;
	}	
	
	public GameFont getFont()
	{
		return font;
	}
	
	//在未尾增加一个字符
	public void addCharacter(char c)
	{
		text += String.valueOf(c).toLowerCase();
		lastCharacter = findLastCharacter(text);
	}
	//从未尾删除一个字符
	public void removeLastChar()
	{
		text = text.substring(0, text.length()-1);
		lastCharacter = findLastCharacter(text);
		forceRefresh();
	}
	
	//从开始处显示所有的文字信息,注意:每个文字是当作一个图片画出来的
	public void paint(Graphics g, GameApplet applet)
	{
		int currentPosition = getSpritePosition().x;
		
		for (int i=0 ; i<=lastCharacter ; i++)
		{
			g.setClip(getSpriteArea());
			currentPosition += font.paintChar(text.charAt(i), g, new Point(currentPosition, getSpritePosition().y));
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?