处理:只有在第一次激活mousePressed()

时间:2017-11-11 04:58:07

标签: javascript text mouseevent processing

背景故事:在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); 
}

1 个答案:

答案 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中写了一篇关于输入的教程。