2017-12-20 30 views
0

私はYouTubeのローディングバーのように上部にバーがあるp5.jsにローディングバーを作ろうとしています。5秒間機能を実行

私は線の幅を減らすことができます map()機能を使用したいので、

var x = 0; 
function setup() { 
    createCanvas(400, 400); 
    x = width; 
} 
function draw() { 
    background(220); 
    stroke(255,0,0); 
    strokeWeight(10); 
    line(0,0,x,0); 
} 

よう

map(x, width , 0 , second(),second()+5); 

Working Example

:すべてx

+0

に例を作業

のでスニペットやシオマネキを用いて機能の例を追加します。 –

+0

@VipinKumar質問のリンクをチェックしてください – Rehan

+0

クロスポストの間をリンクしてください。あなたはすでに受け取ったアドバイスを繰り返す時間を無駄にしません。https://forum.processing.org/two/discussion/25653/executing -a-function-for-only 5秒 –

答えて

1

まずp5.jsライブラリを使用するには、widthに等しくすべきではありません。 0から開始し、時刻に基づいて更新する必要があります。

第2にsecond()は、現在の時刻の実際の秒数を返します。したがって、この場合は適切ではありません。 millis()を使用して、プロジェクトが開始されてからのミリ秒を返す方がよいでしょう。

最後に、あなたが間違ったmapパラメータを使用している(または少なくとも私はあなたが彼らにを渡しているためでやろうとしているのか理解していない)

x = map(millis(), 0, 5000, 0 , width); 

上記は、ミリ秒の範囲をマップしますキャンバスの0 - widthに対して0 - 50000〜5秒)である。


バーをいつでも初期化できるようにするには、値の範囲の開始値と終了値に変数を使用します。

var x, 
    startAt; 

function setup() { 
    createCanvas(400, 400); 
    startAt = millis(); 
} 

function draw() { 
    background(220); 
    stroke(255, 0, 0); 
    strokeWeight(10); 

    x = map(millis(), startAt, startAt + 5000, 0, width); 
    line(0, 0, x, 0); 
} 

function mouseClicked() { 
    startAt = millis(); 
} 

この例では、クリックするたびにバーが再起動されます。 http://alpha.editor.p5js.org/gpetrioli/sketches/SyibBz_ff

+0

これはプロジェクトの開始5秒間だけ動作しますが、実行中のプロジェクトの内部の任意の点にローディングバーを表示したいと考えています。 – Rehan

+0

@Rehanは0と5000の代わりに範囲としては、開始したい瞬間に 'millis()'に初期化され、その終わりに+ 5000が使用される変数を使用します。 –

+0

@Rehanこれをサポートするサンプルを更新しました。マウスをクリックすると再起動します(例*の場合は –

関連する問題