背景故事:在Processing中制作一个重击式游戏。当你点击一个痣它会在它的头部上方打印 BOINK 并且痣消失。遇到问题,在第一次点击时,文字不会打印。我已经三次检查文本的位置和填充无效。
让我感到困惑的是,如果我在文本之前放置一个打印声明,打印将出现在控制台中,但如果我在文本之前放置任何形状,它也将无法打印。
重申一下,此错误仅在第一次点击时发生。
进一步测试表明keyPressed出现同样的问题,因此这是一个非常短的程序,用于演示错误。
void setup() {
}
void draw() {
background(0);
}
void keyPressed() {
textAlign(CENTER);
textSize(16);
fill(255, 255, 0);
println("test");
text("Test", width / 2, height / 2);
}
答案 0 :(得分:0)
请注意,draw()
功能每秒调用60次,每个帧调用background()
功能,清除屏幕并绘制黑色背景。
将其与keyPressed()
函数进行比较,该函数仅在用户按下某个键时调用。在那里,你将一些文字画到屏幕上。
问题是,draw()
函数将立即被调用,并将清除您刚绘制的内容。
您可能希望在keyPressed()
函数中使用keyPressed
变量,而不是使用draw()
函数,如下所示:
void draw(){
background(255, 0, 0);
if(keyPressed){
background(0, 255, 0);
}
}
无耻的自我推销:我在Processing available here中写了一篇关于输入的教程。