2015-09-16 3 views
2

В этом тестовом коде:вызовов от метод визуализации один раз (libGDX)

@Override 
    public void render() { 
     test(); 
    } 

    private void test() { 
    } 

Как я могу назвать test(); один раз (не петля)?

+0

boolean a = true; общественного недействительными Render() { , если (а) { тест(): а = ложь: } –

+0

Вы должны добавить больше кода. По крайней мере, покажите, что это за класс и что он расширяет. –

+0

Я .. я понял. но я хочу включить этот метод один раз, затем выключить. – Crowni

ответ

4

Один способ - простой флаг. Просто создайте булево, который подскажет вам, если тест() был назван

boolean isTestCalled = false; 

    private void test() 
    { 
     System.out.println("test!"); 
    } 

    @Override 
    public void render(float delta) 
    { 
     if(!isTestCalled) 
     { 
      isTestCalled = true; 
      test(); 
     } 

     ... 

вы можете изменить булево в целое и увеличить его каждый раз, когда вы будете называть тест(), чтобы ограничить количество тестового вызова. Я не очень люблю флаги - он генерирует код спагетти.


Если бы C++, второй вариант будет использовать статической переменной внутри тестовой функции и просто сказать ему, сколько раз он должен называться - но эй это Java :). Статика только для классов, но вы можете имитировать его:

//even inside your class 
    static class Counter 
    { 
     public static int count = 0; 
    } 

    private void test(int limit) 
    { 
     if(++Counter.count <= limit) //here you can add something like ...&& limit > 0 to have and option to infinite calls when calling test(-1) for example 
     { 
      System.out.println("test!"); 
     } 
    } 

    @Override 
    public void render(float delta) 
    { 
     test(2); 

     ... 

И последнее, но не в последнюю очередь - в случае, если вы хотите вызвать тест() точно на старте визуализации - просто переместить его показать() функция. Но я думаю, это не то, что вы хотите сделать, когда создаете такой вопрос.

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