2013-01-24 2 views
0

나는 일년이 지나면 순위에서 위아래로 움직이는 축구 팀의 로그를 시각화하려고하는 프로젝트를 진행하고 있습니다.배열의 여러 요소를 트위닝하기 사이에 모양을 배열

팀을 나타내는 이미지를 배열에 저장하고 그리기 기능에서이를 호출했습니다. 이제는 셰이핑을 사용하여 동작을 트위닝하고 싶지만 팀의 x 및 y 위치를 어디에서 초기화해야하는지 모르겠습니다.

Cannot reference a field before it is defined 

을 그리고 난 x와 y 값을 초기화 할 때 로컬은 초기화 할 필요가 말한다 : 내가 그들을 초기화하려고하면 전 세계적으로이 오류 메시지가 표시됩니다. 내 아래 코드는 내가 OS의 X를 사용하여 Mac에서 처리 2.0b7를 실행하고, 그것이 내가 스케치에 shapetween 라이브러리를 추가 한 표시되지 않을 수 있지만 오 :

PImage[] images = new PImage[17]; 
    PImage img = new PImage(); 
    float x1; //Current x-coord 
    float y1; //Current y-coord 
    float x2; 
    float y2; 
    float x = lerp(x1, x2, ani.position()); 
    float y = lerp(y1, y2, ani.position()); 
    Tween ani; 
    void setup() { 
     size(600, 1600); 
     frame.setResizable(true); 
     for (int i = 0; i < images.length; i++) { 
     images[i] = loadImage(i + ".png"); 
     } 
     for (int i = 0; i < images.length; i++) { 
     images[i].resize(200, 60); 
     } 
     ani = new Tween(this, 2, Tween.SECONDS); 
     background(0); 
    } 
    void draw() { 
     image(images[0], 400, 100); 
     image(images[1], 100, 100); 
     image(images[2], 100, 160); 
     image(images[3], 100, 220, 100, 160); 
     image(images[4], 100, 280); 
     image(images[5], 100, 340); 
     image(images[6], 100, 400); 
     image(images[7], 100, 460); 
     image(images[8], 100, 520); 
     image(images[9], 100, 580); 
     image(images[10], 100, 640); 
     image(images[11], 100, 700); 
     image(images[12], 100, 760); 
     image(images[13], 100, 820); 
     image(images[14], 100, 880); 
     image(images[15], 100, 940); 
     image(images[16], 100, 900); 
    } 
    void mousePressed() { 
     ani.start(); 
    } 

답변

0

귀하의 문제는 당신이 '참조 할 수 있다는 것입니다 ani '를 선포하고 선언하십시오. 즉의

float x = lerp(x1, x2, ani.position()); 
float y = lerp(y1, y2, ani.position()); 

선은 선포하고 건설 후 갈 필요가 :

Tween ani; 
void setup() { 
    ani = new Tween(this, 2, Tween.SECONDS); 
} 

을 그렇지 않으면, 당신은 아직 존재하지 않는 무언가를 가리키는.

여기에이 코드를보십시오 :

PImage[] images = new PImage[17]; 
PImage img = new PImage(); 
float x1, y1, x2, y2, x, y; 
Tween ani; 

void setup() { 
    size(600, 1600); 
    frame.setResizable(true); 
    for (int i = 0; i < images.length; i++) { 
    images[i] = loadImage(i + ".png"); 
    } 
    for (int i = 0; i < images.length; i++) { 
    images[i].resize(200, 60); 
    } 
    ani = new Tween(this, 2, Tween.SECONDS); 
    // values to x1, x2, y1 and y2 should be assigned here 
    x = lerp(x1, x2, ani.position()); 
    y = lerp(y1, y2, ani.position()); 
    background(0); 
} 
void draw() { 
    image(images[0], 400, 100); 
    image(images[1], 100, 100); 
    image(images[2], 100, 160); 
    image(images[3], 100, 220, 100, 160); 
    image(images[4], 100, 280); 
    image(images[5], 100, 340); 
    image(images[6], 100, 400); 
    image(images[7], 100, 460); 
    image(images[8], 100, 520); 
    image(images[9], 100, 580); 
    image(images[10], 100, 640); 
    image(images[11], 100, 700); 
    image(images[12], 100, 760); 
    image(images[13], 100, 820); 
    image(images[14], 100, 880); 
    image(images[15], 100, 940); 
    image(images[16], 100, 900); 
} 
void mousePressed() { 
    ani.start(); 
} 

, BTW 당신은 ​​무승부 루프에서 이미지 호출 당 한 줄을 사용하는 것보다 더 잘 할 수 있습니다. try for man을 for 루프에 줘라!

+0

감사합니다. 나는 그것이 작동하자마자 코드를 굴절시키고 싶다. 문제는 여전히 트윈이 보이지 않는다는 것입니다. 이미지가 움직이는데 움직임이 보이지 않습니다. 제발 조언. – Siya

관련 문제