2017-09-20 14 views
1

私は自分の文書にスケッチのインスタンスを複数持っています。実際に画面をリフレッシュして特定のインスタンシエーションを再実行するにはどうすればよいですか?p5のインスタンスをリフレッシュ

私が持っていると仮定:

function buildSketch(){ 

    var sketch1 = function(sketch){ 
    sketch.setup = function(){ 
     //Do my thing 
    } 
    } 

    new p5(sketch1); 

} 


function buildSecondSketch(){ 

    var sketch2 = function(sketch){ 
    sketch.setup = function(){ 
     //Do my thing 
    } 
    } 

    new p5(sketch2); 

} 

私はwindowオブジェクトにsketchを添付した場合、私はリフレッシュすることができますが、このようで...ハックなどということを知っている:

function buildSecondSketch(){ 

window.sketch = sketch // Adding this seems to help 

    var sketch2 = function(sketch){ 
    sketch.setup = function(){ 
     //Do my thing 
    } 
    } 

    new p5(sketch2); 

} 

そして、私はちょうど:

どれがwo rks。しかし、私はこれがなぜ機能するのか分かりません。

+1

あなたは実際に、切断されたスニペットの代わりに[mcve]を投稿するという習慣に入る必要があります。また、以前の質問に対する回答を受け入れる予定ですか? –

+0

うわー、私の悪い...申し訳ありませんが、私はそれらを受け入れたと思った。 – Modermo

+0

切断されたスニペットに関しては、実際に働いているコードは少なく、私が何かを主に理解しているかどうかについての詳細です。上記の例(馬小屋は意図されていません)と[最後の質問](https://stackoverflow.com/questions/46311291/targeting-and-identifying-shapes-in-the-canvas)には、「問題」または私がやっているバグ...それは私が後にしている機能を達成する方法についての詳細です、そして、私はそれを説明するときにできるだけわかりやすいようにしようとしています。私はあなたの推薦を聞いて、そして掲載されたガイドラインに忠実になるでしょう。 – Modermo

答えて

1

は、setup()の機能をご自身でご利用ください。

最も簡単なことは、それぞれのスケッチにrefresh()関数を追加することです。この関数は、スケッチレベルの変数を元の値に戻して、スケッチの状態を簡単にリセットします。それから、その関数を呼び出します。これは基本的にsetup()と呼んでいますが、P5.jsの内部自動関数呼び出しを短絡させないようにしています。

どちらの方法でも、スケッチ変数への参照を保持する必要があります。グローバル変数を作成するだけのwindow.sketchを使用するか、buildSketch()関数の外で宣言することができます。

また、古いp5インスタンスを取り除いて再インスタンス化することもできますが、各p5インスタンスへの参照を保持する必要があります。

+0

私は、インスタンスをグローバル変数に結びつけて、それをそこから実行しました。ありがとう! – Modermo

関連する問題