2016-06-01 4 views
0

スライダの入力に基づいてシェイプを描きたい。入力時に形状を描くと予期しない結果が得られますか?

import controlP5.*; 
ControlP5 cp5; 

int people = 5; 
int DMamt = 0; 
int peoplehis; 
Slider abc; 

PShape vorm; 

void setup() { 
    cp5 = new ControlP5(this); 
    size(displayWidth, displayHeight); 

    cp5.addSlider("people") 
    .setPosition(10,10) 
    .setWidth(400) 
    .setRange(0,20) 
    .setValue(0) 
    .setNumberOfTickMarks(20) 
    .setSliderMode(Slider.FIX) 
    ; 

    cp5.addSlider("DMamt") 
    .setPosition(450,10) 
    .setWidth(400) 
    .setRange(0,255) 
    .setValue(0) 
    .setNumberOfTickMarks(5) 
    .setSliderMode(Slider.FIX) 
    ; 

    vorm = createShape(); 
    frameRate(10); 
} 


void draw(){ 

    if(peoplehis != people){ 
    vorm.beginShape(); 
    vorm.fill(DMamt); 
    for(int i = 0; i <= people; i++){ 
     vorm.vertex(random(500), random(500)); 
    } 
    endShape(); 
    } 
    peoplehis = people; 

    shape(vorm, 100,100); 
} 

iは点の所望の量の形状を得るスライダ値を設定された第1時間:以下のコードを参照してください。最初にスライダの値を変更すると、スライダの値が既に描画されているポイントに追加されます。私は新しい形をしたい。古い形はなくなるはずです。以下の例を参照してください。

スライダの最初の値= 5 これは私に5ポイントの形状を与えます。 silderの

2番目の値は= 12 これは私がこれを行うのですか代わりに

17の12のポイントを望んでくれ(GREAT NOT)17点 と形状を与えます?私は非常にコード:(を経験していないです

+0

[mcve]を提供してください。あなたの質問はControlP5とは関係がないので、コードは単なる追加です。できるだけハードコードしてください。そうすれば、コードを実行するのが簡単になります。 –

+0

これは分かったのですか? –

+0

ええ、私は完全に別のアプローチで行きました。 – FutureCake

答えて

0

PShapeはあなたがbeginShape()vertex()、およびendShape()機能を複数回呼び出すことで追加することができ、複数の形状、で構成することができます。

あなただけにしたい場合の処理新しいPShapeインスタンスをやり直すために、再度createShape()関数を呼び出して、その後、新しい形状を再作成する代わりに、複数の図形を追加する。また、background()関数を呼び出すことで、前のフレームから必ず明確にして。

ここでSiがあります例:

PShape shape; 

void setup() { 

    size(500, 500); 

    shape = createShape(); 
    frameRate(60); 
} 

void mousePressed(){ 
    shape = createShape(); 
    shape.beginShape(); 
    for(int i = 0; i < 3; i++){ 
    shape.vertex(random(width), random(height)); 
    } 
    shape.endShape(); 
} 

void draw(){ 
    background(0); 
    shape(shape, 0,0); 
} 
関連する問題