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

Бесконечная анимация

15.05.2020, 00:31. Показов 923. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.

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

Я пока мыслью дошел до того, что мне скорее всего нужен цикл, но цикл работает странно, не перерисовывает методом repaint() прямоугольник при каждой итерации, а просто резко перемещает его. Поэтому пробовал с if, но тогда условие будет повторятся и прямоугольник не сможет двигаться влево. Как можно сделать так, чтобы он "понимал" когда нужно идти с одной стороны в другую и по достижению определенной границы пойти в обратку?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2020, 00:31
Ответы с готовыми решениями:

Бесконечная сумма с точностью 0,0001
вот я начал, но чето не работает, показывает 1 в результате (((( public static double lab2(double e) { int i = 1; ...

TRICKS: бесконечная рекурсия без StackOverflow
в JVM есть возможность создать практически бесконечную рекурсию не упав при этом в стек овер package tricks; /** * Created by...

Бесконечная анимация на JS
Доброго времени суток, уважаемые форумчане! Перелопатила достаточно информации, и здесь искала нужную информацию, но она сложнее чем нужно,...

1
Модератор
Эксперт Java
 Аватар для alecss131
2881 / 1385 / 411
Регистрация: 11.08.2017
Сообщений: 4,414
Записей в блоге: 2
16.05.2020, 11:20
Mean Green, вот нечто такое
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
 
public class MoveCube extends JPanel implements ActionListener {
    private static final long serialVersionUID = 1L;
    private Timer timer;
    private boolean isRun;
    private JFrame wnd;
    private JButton btn;
    private int t = 17;
    private int w = 10, h = 10;
    private int x;
    private int dx = 5;
 
    public static void main(String[] args) {
        new MoveCube().run();
    }
    
    public void run() {
        timer = new Timer(t, this);
        timer.setActionCommand("timer");
        wnd = new JFrame("Moving Cube");
        wnd.setLayout(null);
        wnd.setSize(315, 125);
        wnd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        wnd.setResizable(false);
        setBounds(5, 5, 300, 60);
        btn = new JButton("Start/Stop");
        btn.addActionListener(this);
        btn.setActionCommand("button");
        btn.setBounds(80, 70, 160, 20);
        wnd.add(btn);
        wnd.add(this);
        wnd.setVisible(true);
        x = getWidth()/2;
    }
    
    public void update() {
        if (x + dx > 0 && x + dx < getWidth()) {
            x += dx;
        } else {
            if (dx > 0) {
                x = getWidth() - w;
            } else {
                x = 0;
            }
            dx *= -1;
        }
    }
 
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, getWidth(), getHeight());
        g2d.setColor(Color.CYAN);
        g2d.fillRect(x, (getHeight() - h) / 2, w, h);
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        switch (e.getActionCommand()) {
        case "timer": {
            update();
            repaint();
            break;
        }
        case "button": {
            if (isRun)
                timer.stop();
            else
                timer.start();
            isRun ^= true;
            break;
        }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2020, 11:20
Помогаю со студенческими работами здесь

Бесконечная анимация
Добрый день! Мне необходимо сделать анимацию объекта по кругу, и чтобы она не заканчивалась. Я подобное делал на флеш и на C#, на флеш...

Анимация: бесконечная смена картинок
суть такая: Добавлено через 7 минут нужно сделать так , что бы была бесконечная смена картинок. на одном месте будет всегда меняться...

Бесконечная сфера и бесконечная плоскость
Даже не знаю в какой степени это геометрический вопрос, но пересекает ли бесконечная плоскость бесконечную сферу?

Анимация в OpenGL, а где собсно, анимация?
// Bounce.cpp // Demonstrates a simple animated rectangle program with GLUT // OpenGL SuperBible, 3rd Edition // Richard S. Wright...

Бесконечная дорога
Привет. Хочу сделать аналог гонок с тетриса, только в ЗД. У меня такой вопрос, как мне сделать, чтобы трасса была бесконечная и было...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru