Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
118 / 5 / 4
Регистрация: 05.05.2013
Сообщений: 336

Мерцание при перерисовке кадра игры

26.04.2016, 17:53. Показов 1367. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Делаю обычную игру "Рикошет". Суть игры: снизу пластинка, а так же летает и отбивается шарик, нельзя, чтобы шарик упал.

Столкнулся с проблемой при перерисовке кадра - это мерцание. Понятно, чтобы избавится от мерцания можно через буфер, заранее создавая кадр, но, т.к. я пока не силен в функционале и доступных классах, то спрашиваю тут.

Пока есть только класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class GamePaint extends JPanel
{
    private GameObject _gameObj;
    
    public GamePaint(GameObject gameObj)
    {
        this._gameObj = gameObj;
    }
    
    @Override
    public void paint(Graphics g)
    {
        // рисуем новый овал
        g.setColor(Color.BLUE);
        g.fillOval(this._gameObj.getCircle().getX(), this._gameObj.getCircle().getY(), this._gameObj.getCircle().getWidth(), this._gameObj.getCircle().getHeight());
        
        // рисуем новый прямоугольник
        g.setColor(Color.BLACK);
        g.fillRect(this._gameObj.getRectangle().getX(), this._gameObj.getRectangle().getY(), this._gameObj.getRectangle().getWidth(), this._gameObj.getRectangle().getHeight());
    }
}
Добавлено через 1 час 9 минут
Решил с помощью bufferImage. Т.е. кадр формируется до его прорисовки:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.awt.*;
import java.awt.image.BufferedImage;
 
import javax.swing.*;
 
public class GamePaint extends JPanel
{
    private GameObject _gameObj;
    private JFrame _frame;
    
    private Image _bufferImg = null;
    private Graphics2D _g2d;
    
    public GamePaint(GameObject gameObj, JFrame frame)
    {
        this._gameObj = gameObj;
        this._frame = frame;
        this._bufferImg = new BufferedImage(this._frame.getWidth(), this._frame.getHeight(), BufferedImage.TYPE_INT_RGB);
        this._g2d = (Graphics2D)this._bufferImg.getGraphics();
    }
    
    @Override
    public void paint(Graphics g)
    {
        this._g2d.setColor(new Color(240, 240, 240));
        this._g2d.fillRect(0, 0, this._frame.getWidth(), this._frame.getHeight());
        // рисуем новый овал
        this._g2d.setColor(Color.BLUE);
        this._g2d.fillOval(this._gameObj.getCircle().getX(), this._gameObj.getCircle().getY(), this._gameObj.getCircle().getWidth(), this._gameObj.getCircle().getHeight());
        
        // рисуем новый прямоугольник
        this._g2d.setColor(Color.BLACK);
        this._g2d.fillRect(this._gameObj.getRectangle().getX(), this._gameObj.getRectangle().getY(), this._gameObj.getRectangle().getWidth(), this._gameObj.getRectangle().getHeight());
        
        g.drawImage(this._bufferImg, 0, 0, null);
    }
}
Всем спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2016, 17:53
Ответы с готовыми решениями:

Мерцание при перерисовке
Доброго времени суток. Есть несколько элементов(прямоугольников). При перетаскивании их мышью каждый раз все изображения перерисовываются....

Мерцание при перерисовке (MFC)
Господа Программисты! Делаю Тетрис на MFC. При перерисовке игрового поля (сообщение ON_WM_PAINT), возникает мерцание. ...

Мерцание при перерисовке окна
Я хочу заменить одно из дочерних окон Outlook своим. Делаю это так: отлавливаю дескрипторы, мое окно ставлю поверх стандартного, размеры...

1
26.04.2016, 17:56

Не по теме:

Цитата Сообщение от darksector Посмотреть сообщение
this._
это ужасно

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2016, 17:56
Помогаю со студенческими работами здесь

Мерцание формы при перерисовке
после каждого хода идет прорисовка поля и сопровождается мерцанием. даблбуфер не помогает... namespace soft { public partial...

Убрать мерцание при перерисовке объектов
как убрать мерцание? program sharik11; uses crt, graphabc; var x, y, dx, dy: integer; procedure blow(a, b:...

Мерцание при перерисовке дочернего компонента
Есть компонент в котором создаётся скроллбар (компонент в принципе не важен). При изменение позиции скроллбара происходит вызов...

Как убрать мерцание картинок при перерисовке?
всем привет, помогите столкнулся с такой проблемой, когда у меня картинка в формате jpg спускается вниз автоматически по Timer он начинает...

Как устранить мерцание при перерисовке PictureBox?
Привет. Рисую на Bitmap, а потом PictureBox'у его присваиваю. Вопрос как убрать мерцание при перерисовке. В интернете искал. private...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru