2016-06-01 5 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); 
} 

내가 원하는 포인트 크기와 형상을 얻을 슬라이더 값을 설정 처음 : 아래의 코드를 참조. 하지만 처음 슬라이더 값을 변경하면 슬라이더 값이 이미 그려진 점에 추가됩니다. 하지만 나는 새로운 모양을 원해. 오래된 모양은 사라져야합니다. 예를 들어 아래를 참조하십시오 :

슬라이더의 첫 번째 값 = 5 이것은 5 점 (GREAT)으로 된 모양을 제공합니다. silder의

초 값 = 12 이 난 이것을 어떻게 대신

(17)의 12 점을하려는 날 (GREAT NOT) 17 점 와 형상을 제공 ?? 나는 매우 코드 :(경험하고 있지 않다

+0

[mcve]를 제공하십시오. 귀하의 질문은 ControlP5와 아무런 관련이 없으므로 코드가 추가되었습니다. 코드를 실행하는 것이 더 쉽습니다. 가능한 한 하드 코드를 시도하십시오. –

+0

당신은 이것을 알아 냈습니까? –

+0

예 결국 나는 완전히 다른 접근 방식으로 갔다. – FutureCake

답변

0

PShape 당신이 beginShape(), vertex()endShape() 함수를 여러 번 호출하여 추가 할 수있는 여러 형태로 구성 할 수 있습니다.

방금하려는 ​​경우 처리 대신 여러 모양을 추가하는 새로운 모양을 재현, 새로운 PShape 인스턴스 다시 시작 다시 createShape() 함수를 호출합니다. 또한, background() 함수를 호출하여 반드시 밖으로 명확 이전 프레임을합니다. 여기

은시입니다 예 :

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); 
}