Java Canvas 写动画文字
Java Canvas write animation text
我正在制作一款格斗游戏,在游戏开始之前,我想添加一个介绍故事,我希望故事以 1 个字母显示,这是我的代码:
public class Story {
public int index;
public int delay;
public int x;
public int y;
public String[] text = {"D","i","c","e","r","i","t","a","k","a","n"," ", "a","d","a"," ","s","e","o","r","a", "n", "g",
" ","p","e","m","u","d","a"," ","b","e","r","n", "a","m","a"," ","b","o","r","a","k", "s", " ","y","a","n","g"," ","m",
"e","m","i","l","i","k", "i"," ","d","e","n","d","a","m"," ", "t", "e","r","h","a","d","a","p"," ","k","e","m","a","t",
"i","a","n"," ","a","d","i","k","n", "y", "a","R","e","m","a","n"," ","y","a","n","g"," ","t", "e","w","a","s"," ","d",
"i","t","a", "n", "g","a","n"," ","p","e","n","j","a","h","a","t"," ", "n","o","m","o","r"," ","1"," ","d", "i", " ","d","u","n","i","a"," ",
"y","a","i","t","u"," ", "B","u","k","a"," ","d","a","d","a", ".", "\n","S","i","a","p","k","a","h"," ","a","n","d","a"," ", "m","e","m","b","a","n","t","u"," ", "b", "o",
"r","a"," k","s","?"};
public Story(){
x=10;
y=10;
index=0;
}
public void render(Graphics g){
//background
ImageLoader loader = new ImageLoader();
BufferedImage load = loader.load("/assets/mainmenu.png");
g.drawImage(load, 0, 0, null);
//draw the string
if(delay > 10)
{
if(index < text.length){
g.drawString(text[index],x,y);
}
index++;
x=x+10;
delay = 0;
if(x==500)
{
x = 10;
y=y+100;
}
}
}
public void tick(){
delay++;
}
}
它有效,但不太正确。
已绘制的旧字符串丢失。它每次延迟只绘制 1 个字母,并且已经绘制的旧字母消失了。
有人可以帮我更正此代码吗?
我刚开始使用 java。非常感谢。
我解决了 :D 这是我的新代码 :
public class Story {
public int delay;
public int x;
public int y;
public String[] text = {"D","i","c","e","r","i","t","a","k","a","n"," ", "a","d","a"," ","s","e","o","r","a", "n", "g",
" ","p","e","m","u","d","a"," ","b","e","r","n", "a","m","a"," ","b","o","r","a","k", "s", " ","y","a","n","g"," ","m",
"e","m","i","l","i","k", "i"," ","d","e","n","d","a","m"," ", "t", "e","r","h","a","d","a","p"," ","k","e","m","a","t",
"i","a","n"," ","a","d","i","k","n", "y", "a", " ", "R","e","m","a","n","."
};
String text2[] = {"R","e","m","a","n"," "," ","t", "e","w","a","s"," ","d",
"i","t","a", "n", "g","a","n"," ","p","e","n","j","a","h","a","t"," ", "n","o","m","o","r"," ","1"," ","d", "i", " ","d","u","n","i","a"," ",
"y","a","i","t","u"," ", "B","u","k","a"," ","d","a","d","a", "."
};
String text3[] = {"L","i","n","l","i","n"," ",
"p","a","c","a","r"," ","b","o", "r","a","k","s"," ","j",
"u","g","a", " ", "m","e","r","a","s","a","k","a","n", " ", "k","e","p","e", "d","i","h","a","n"," ","p","a","c", "a", "r","n","y","a",","," ","i",
"a"," ","p","u","n"," ", "m","e","m","u","t","u","s","k","a", "n"," ", "u","n","t","u","k"," ","m","e","m","b","a","n","t","u", " ","b","o","r","a","k","s",".",
};
String text4[] = {"S","i","a","p","k","a","h"," ","a","n","d","a"," ", "m","e","m","b","a","n","t","u"," ", "m", "e","m","b","a","l","a","s","k","a","n"," ", "d","e","n","d","a","m", " i","n","i" ,"?"
};
String text5[] = {"P","e","n","c","e","t"," ","t","o","m","b","o","l", " s","pa","si"," ","un","tu","k ","me","la", "nj", "ut","ka","n..."
};
String story,story2,story3,story4,story5;
public int index,index2,index3,index4,index5;
BufferedImage load;
public Story(){
x=180;
y=0;
index=0;
index2=0;
index3=0;
index4=0;
index5=0;
story="";
story2="";
story3="";
story4="";
story5="";
ImageLoader loader = new ImageLoader();
load = loader.load("/assets/story.jpg");
}
public void render(Graphics g){
//background
g.drawImage(load, 0, 0, null);
g.drawString(story,x,y+100);
g.drawString(story2,x,y+150);
g.drawString(story3,x,y+200);
g.drawString(story4,x,y+250);
g.drawString(story5,x,y+350);
}
public void tick() {
delay++;
if(delay > 2) {
if(index < text.length) {
story=story+text[index];
index++;
} else if(index2<text2.length){
story2=story2+text2[index2];
index2++;
} else if(index3<text3.length){
story3=story3+text3[index3];
index3++;
} else if(index4<text4.length){
story4=story4+text4[index4];
index4++;
}else if(index5<text5.length){
story5=story5+text5[index5];
index5++;
}
delay = 0;
}
}
}
我正在制作一款格斗游戏,在游戏开始之前,我想添加一个介绍故事,我希望故事以 1 个字母显示,这是我的代码:
public class Story {
public int index;
public int delay;
public int x;
public int y;
public String[] text = {"D","i","c","e","r","i","t","a","k","a","n"," ", "a","d","a"," ","s","e","o","r","a", "n", "g",
" ","p","e","m","u","d","a"," ","b","e","r","n", "a","m","a"," ","b","o","r","a","k", "s", " ","y","a","n","g"," ","m",
"e","m","i","l","i","k", "i"," ","d","e","n","d","a","m"," ", "t", "e","r","h","a","d","a","p"," ","k","e","m","a","t",
"i","a","n"," ","a","d","i","k","n", "y", "a","R","e","m","a","n"," ","y","a","n","g"," ","t", "e","w","a","s"," ","d",
"i","t","a", "n", "g","a","n"," ","p","e","n","j","a","h","a","t"," ", "n","o","m","o","r"," ","1"," ","d", "i", " ","d","u","n","i","a"," ",
"y","a","i","t","u"," ", "B","u","k","a"," ","d","a","d","a", ".", "\n","S","i","a","p","k","a","h"," ","a","n","d","a"," ", "m","e","m","b","a","n","t","u"," ", "b", "o",
"r","a"," k","s","?"};
public Story(){
x=10;
y=10;
index=0;
}
public void render(Graphics g){
//background
ImageLoader loader = new ImageLoader();
BufferedImage load = loader.load("/assets/mainmenu.png");
g.drawImage(load, 0, 0, null);
//draw the string
if(delay > 10)
{
if(index < text.length){
g.drawString(text[index],x,y);
}
index++;
x=x+10;
delay = 0;
if(x==500)
{
x = 10;
y=y+100;
}
}
}
public void tick(){
delay++;
}
}
它有效,但不太正确。 已绘制的旧字符串丢失。它每次延迟只绘制 1 个字母,并且已经绘制的旧字母消失了。
有人可以帮我更正此代码吗? 我刚开始使用 java。非常感谢。
我解决了 :D 这是我的新代码 :
public class Story {
public int delay;
public int x;
public int y;
public String[] text = {"D","i","c","e","r","i","t","a","k","a","n"," ", "a","d","a"," ","s","e","o","r","a", "n", "g",
" ","p","e","m","u","d","a"," ","b","e","r","n", "a","m","a"," ","b","o","r","a","k", "s", " ","y","a","n","g"," ","m",
"e","m","i","l","i","k", "i"," ","d","e","n","d","a","m"," ", "t", "e","r","h","a","d","a","p"," ","k","e","m","a","t",
"i","a","n"," ","a","d","i","k","n", "y", "a", " ", "R","e","m","a","n","."
};
String text2[] = {"R","e","m","a","n"," "," ","t", "e","w","a","s"," ","d",
"i","t","a", "n", "g","a","n"," ","p","e","n","j","a","h","a","t"," ", "n","o","m","o","r"," ","1"," ","d", "i", " ","d","u","n","i","a"," ",
"y","a","i","t","u"," ", "B","u","k","a"," ","d","a","d","a", "."
};
String text3[] = {"L","i","n","l","i","n"," ",
"p","a","c","a","r"," ","b","o", "r","a","k","s"," ","j",
"u","g","a", " ", "m","e","r","a","s","a","k","a","n", " ", "k","e","p","e", "d","i","h","a","n"," ","p","a","c", "a", "r","n","y","a",","," ","i",
"a"," ","p","u","n"," ", "m","e","m","u","t","u","s","k","a", "n"," ", "u","n","t","u","k"," ","m","e","m","b","a","n","t","u", " ","b","o","r","a","k","s",".",
};
String text4[] = {"S","i","a","p","k","a","h"," ","a","n","d","a"," ", "m","e","m","b","a","n","t","u"," ", "m", "e","m","b","a","l","a","s","k","a","n"," ", "d","e","n","d","a","m", " i","n","i" ,"?"
};
String text5[] = {"P","e","n","c","e","t"," ","t","o","m","b","o","l", " s","pa","si"," ","un","tu","k ","me","la", "nj", "ut","ka","n..."
};
String story,story2,story3,story4,story5;
public int index,index2,index3,index4,index5;
BufferedImage load;
public Story(){
x=180;
y=0;
index=0;
index2=0;
index3=0;
index4=0;
index5=0;
story="";
story2="";
story3="";
story4="";
story5="";
ImageLoader loader = new ImageLoader();
load = loader.load("/assets/story.jpg");
}
public void render(Graphics g){
//background
g.drawImage(load, 0, 0, null);
g.drawString(story,x,y+100);
g.drawString(story2,x,y+150);
g.drawString(story3,x,y+200);
g.drawString(story4,x,y+250);
g.drawString(story5,x,y+350);
}
public void tick() {
delay++;
if(delay > 2) {
if(index < text.length) {
story=story+text[index];
index++;
} else if(index2<text2.length){
story2=story2+text2[index2];
index2++;
} else if(index3<text3.length){
story3=story3+text3[index3];
index3++;
} else if(index4<text4.length){
story4=story4+text4[index4];
index4++;
}else if(index5<text5.length){
story5=story5+text5[index5];
index5++;
}
delay = 0;
}
}
}