Java-буфер и анимация - PullRequest
       5

Java-буфер и анимация

1 голос
/ 11 октября 2011

Я создаю простую 2D-игру в Java.Я только сделал это в C ++ с Windows API до сих пор.В Java я получаю объект Graphics, расширяя JFrame и вызывая this.getContentPane().getGraphics().С помощью этого объекта я рисую все на экране, каждый кадр.Возникает несколько вопросов:

  1. Backbuffer: я не получаю никаких мерцающих эффектов, пока я не использую Backbuffer (я рисую непосредственно на объекте Graphics),Почему это?Есть ли в Java встроенный backbuffer или что-то в этом роде?

  2. Анимации: я привык помещать все анимационные части в один лист спрайтов, как в этом примере: http://www.envygames.com/share/sample_animation.jpg

Теперь кто-то сказал мне, что вы можете просто рисовать анимированные .gif и java будет рисовать их независимо от игрового цикла.Я попробовал это, и это не похоже на работу.Это правда, или я также должен использовать эти спрайт листы в Java?

Спасибо

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

Да, в Java есть стратегия рендеринга с двойным буфером, которую можно включать и выключать ...

Java: как сделать двойную буферизацию в Swing?

Насчет анимированных картинок, я думаю, что это правильно, но вам, возможно, придется поместить их в соответствующий контейнер (возможно, как значок JLabel?).

2 голосов
/ 11 октября 2011
getting a Graphics object by extending JFrame and 
calling this.getContentPane().getGraphics().

не рисуйте непосредственно в JFrame для Custom Painting вы должны искать JLabel , который позволяет рисовать все, другой выбор будетрасширяя JCompoments или JPanel для этого

для рисования в Swing, вы должны искать paintComponent(Graphics g), а не paint(Graphics g), потому что этот метод много раз используется в примерах и распределен по некоторымJava examplesDepots, это неправильный метод с возможными недостатками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...