2017-11-11 4 views
1

Backstory:処理中に巨大なゲームを作成する。モルをクリックすると、頭の上にBOINKが印刷され、モルが消えます。最初のクリックでテキストが印刷されない問題が発生します。私は、テキストの場所と塗りつぶしを三重チェックして無駄にしました。処理:mousePressed()の最初の起動時にのみテキストが印刷されません。

私が混乱させているのは、テキストの直前にprint文を置くと、印刷がコンソールに表示されますが、テキストの前に何らかのシェイプを置くと印刷されないということです。

繰り返しておきますが、このエラーは最初のクリックでのみ発生します。

さらなるテストでは、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

プロジェクト全体ではなく[mcve]を投稿すると、もっと良い運が得られます。問題を特定するには、[プログラムのデバッグ](http://happycoding.io/tutorials/processing/debugging)が必要です。どのコード行が期待どおりに動作していませんか? –

+0

私はプログラム全体を投稿しませんでしたが、同じ問題を持つ非特定の例に短縮しました。 – Tristan

答えて

0

draw()機能は、毎秒60回呼び出され、各フレームは、画面をクリアし、黒の背景を描画しますbackground()機能を呼び出していることに注意してください。

これは、ユーザーがキーを押したときにのみ呼び出されるkeyPressed()関数と比較してください。その中で、あなたはスクリーンにテキストを描いています。

問題は、draw()関数がすぐに呼び出され、先ほど作成したものがクリアされるということです。

代わりkeyPressed()機能を使用して、あなたはおそらくdraw()機能でkeyPressed変数を使用したい、このように:

void draw(){ 
    background(255, 0, 0); 

    if(keyPressed){ 
     background(0, 255, 0); 
    } 
} 

恥知らずな自己宣伝:私は、利用可能なhereの処理で入力のチュートリアルを書きました。

+0

問題がキープレスごとに一貫していれば、私はそれがbackground()問題であることに同意するでしょう。しかし、私が言ったように、それは最初のプレスでのみ起こり、他のプレスでは起こりません。 – Tristan

+0

@Tristan 'background()'の呼び出しをコメントアウトして、実際に画面に描画されるテキストを見ることができます。もし私がそうするなら、私はキーを押すたびにテキストを見る。 –

関連する問題