2017-01-26 3 views
1

Я начал с кодирования в обработке, когда я столкнулся с ошибкой, для которой я не могу найти решение.Глобальная переменная «x» не существует, обработка 3.2.3

Код:

void setup(){ 
    size(640,360); 
} 

int scl = 20; 

void draw(){ 
    background(250); 
    drawGrid(scl); 
    makeObject(0,0,20,20); 
} 

void drawGrid(float size){ 
    for(int v=0;v<640/20;v++){ 
    for(int h=0;h<360/20;h++){ 
     rect(h*size,v*size,size,size); 
    } 
    } 
} 

void makeObject(int obX,int obY,int obHeight,int obWidth){ 
    this.x = obX; 
    this.y = obY; 
    this.obH = obHeight; 
    this.obW = obWidth; 

    rect(this.x,this.y,this.obH,this.obW); 
} 

Ошибка: «Глобальная переменная„х“не существует», «Глобальная переменная„у“не существует» и так далее. Пожалуйста, помогите

+1

Определяет ли ваш класс эти переменные? – AntonH

ответ

1

Ну, ваша ошибка говорит все: вы используете переменную x, но вы никогда ее не объявляете.

Позвольте мне угадать: вы исходите из фона JavaScript? Ваша функция makeObject() выглядит как конструктор JavaScript, но это совсем не то, как объекты работают на Java.

В Java вам необходимо определить class, а затем объявить переменную, которую вы собираетесь использовать. Как это:

class MyObject{ 
    float x; 
    float y; 
    float obH; 
    float obW; 

    public MyObject(float obX, float obY, float obHeight, float obWidth){ 
     this.x = obX; 
     this.y = obY; 
     this.obH = obHeight; 
     this.obW = obWidth; 
    } 
} 

Затем можно добавить функции к этому классу, такие как drawMe() функции, которая использует эти переменные, чтобы нарисовать прямоугольник.

Однако я не уверен, почему вы пытаетесь создать объект вообще, поскольку вы никогда не используете объект, который вы создаете. Вы можете просто использовать параметры напрямую:

void makeObject(int obX,int obY,int obHeight,int obWidth){ 
    rect(obX, obY, obHeight, obWidth); 
} 
+0

Благодарим вас за быстрый ответ. Я планировал сделать очень простую игру, и я думал, что сделать многоразовую функцию сделает все это намного проще. –

+0

@ Mr.Dude__ У вас есть правильная идея: вы должны использовать многократно используемые функции и объекты всякий раз, когда можете. Но ваш синтаксис был просто выключен. Вы были на полпути между классом и функцией. Вам просто нужно выбрать один. : p –

+1

Кстати, вы также были правы во мне, исходя из фона Javascript и снова, спасибо за ответ, потому что теперь я понимаю, как работают классы и объекты. –

Смежные вопросы