2017-09-16 3 views
2

キャンバスをクリックしたときにp5 jsスケッチでfunction draw(){}を呼び出すことはできますか?マウスクリックによるコール関数の描画

キャンバスのどこかをクリックしたときに、描画機能の下のすべてを呼び出すようにしたいと思います。

function setup() { 
 
createCanvas(500, 500); 
 
frameRate(65); 
 
    background('#ff0a0a'); 
 
textSize(60); 
 
text("ART", 370, 250); 
 

 
}; 
 
function draw() { 
 
    noFill(); 
 
    var red = random(100); 
 
    var green = random(200); 
 
    var blue =random(230); 
 
    var h = random(height); 
 

 
    stroke(red,green,blue); 
 
    strokeWeight(8); 
 
    rect(frameCount,h,300,20+(frameCount)); 
 
    
 
    ellipse(frameCount,h ,300,20+(frameCount)); 
 
    triangle(frameCount,h ,300,20+(frameCount)); 
 

 
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.14/p5.js"></script>

+0

あなたは '()'関数ドローに自分自身を呼び出す必要はありません。自動的に毎秒60回呼び出されます。あなたは正確に何をしようとしていますか?あなたは[mcve]を投稿できますか? –

+0

はい私は私の元の質問を編集します。 – codeneophyte

+0

スニペットを転記するときは、ライブラリを必ず添付してください。私が作った編集を見てください。 –

答えて

1

これが私のために正常に動作します:

function setup() { 
 
    createCanvas(500, 500); 
 
    frameRate(65); 
 
    background('#ff0a0a'); 
 
    textSize(60); 
 
    text("ART", 370, 250); 
 
}; 
 

 
function mousePressed() { 
 
    noFill(); 
 
    var red = random(100); 
 
    var green = random(200); 
 
    var blue =random(230); 
 
    var h = random(height); 
 

 
    stroke(red,green,blue); 
 
    strokeWeight(8); 
 
    rect(frameCount,h,300,20+(frameCount)); 
 
    
 
    ellipse(frameCount,h ,300,20+(frameCount)); 
 
    triangle(frameCount,h ,300,20+(frameCount)); 
 
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.14/p5.js"></script>

+0

ありがとう!何度もクリックしなくても、一度クリックすると連続して描画されるようにする方法はありますか? – codeneophyte

+0

@codeneophyte 'mouseDragged() '関数を試しましたか、あるいはマウスが' draw() '関数から押されたかどうかを確認しましたか? –

+0

いいえ、私は 'mouseDragged'機能を認識していませんでしたが、今すぐ試してみました。すべてのあなたの助けをありがとう! – codeneophyte

0

ちょうど別の方法に言及すると、上記のKevin's answerであなたの質問に対処するために、あなたが何かを行うことができますこのように、マウスiもう一度クリックすると停止します。これは、描画のためのトグルスイッチのように動作します: -

var drawThings; 
 

 
function setup() { 
 
    createCanvas(500, 500); 
 
    frameRate(65); 
 
    background('#ff0a0a'); 
 
    textSize(60); 
 
    text("ART", 370, 250); 
 
} 
 

 
function draw() { 
 
    if (drawThings) { 
 
    noFill(); 
 
    var red = random(100); 
 
    var green = random(200); 
 
    var blue = random(230); 
 
    var h = random(height); 
 

 
    stroke(red, green, blue); 
 
    strokeWeight(8); 
 
    rect(frameCount, h, 300, 20 + (frameCount)); 
 

 
    ellipse(frameCount, h, 300, 20 + (frameCount)); 
 
    triangle(frameCount, h, 300, 20 + (frameCount)); 
 
    } 
 
} 
 

 
function mouseClicked() { 
 
    drawThings = !drawThings; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.14/p5.js"></script>

+0

なぜ 'mouseIsPressed'変数を使用しないのですか?コメントにはすでにこのオプションが説明されています。 –

+0

@KevinWorkmanそれはトグルドロー効果を達成できないので、それは効果を引き出すためにホールドダウンを与えるでしょう –

+0

私はOPがホールドダウン効果を探していると思った。とにかく 'mouseClicked()'関数を 'drawThings =!drawThings;'に短縮することもできることに注意してください。 –

関連する問題