Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
Koha777
0 / 0 / 0
Регистрация: 06.01.2015
Сообщений: 4
1

Графический объект при перемещении оставляет шлейф

19.11.2015, 01:21. Просмотров 458. Ответов 3
Метки нет (Все метки)

Добрый день! Недавно начал изучать джаву, практикую сейчас в создании мелкой 2D игры, на данный момент изучаю движение персонажа по карте. И вот после нажатий на клавишу движений, изображение оставляет след, который тянется как хвост. Я понимаю, что где то не дописан repaint(); Вот код
И еще, если спрайт игрока bmp, то на дисплее он не отображается, в чем дело? а gif & jpg поддерживаются. В чем дело?
Мейн
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
package dka.objects;
import javax.swing.*;
public class Main {
 
    public static void main(String[] args) {
        JFrame f = new JFrame("Ubezhishe");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(600, 600);
        f.add(new Map());
        f.setVisible(true);
    }
 
}
Карта
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
package dka.objects;
 
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
 
import javax.swing.*;
 
public class Map extends JPanel implements ActionListener {
    
    Timer t = new  Timer(20,  this);
     Player p = new Player();
  
     public Map(){
         t.start();
         p.posX=180;
         p.posY=180;
         addKeyListener(new MyKeyAdapter());
         setFocusable(true);
     }
     
     private class MyKeyAdapter extends KeyAdapter{
        public void keyPressed(KeyEvent e){
            p.keyPressed(e);
        }
        public void keyReleased(KeyEvent e){
            p.keyReleased(e);
        }
        
     }
     
public void paint(Graphics g){
      g= (Graphics2D) g;
     
      g.drawImage(p.img, p.posX, p.posY, p.width, p.height, null);
  }
 
 
 
public void actionPerformed(ActionEvent e) {
    p.move();
    repaint();
    
}
 
}
и класс игрока
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
package dka.objects;
 
import java.awt.Image;
import java.awt.event.KeyEvent;
 
import javax.swing.ImageIcon;
 
public class Player {
    Image img = new ImageIcon("src/9.jpg").getImage();
    
    
    int speed = 2;
    
    int directionX = 0;
    int directionY = 0;
    
    int posX;
    int posY;
    
    int width = 25;
    int height = 25;
    
    public void move(){
         if(directionX != 0 || directionY  != 0) {
             posX +=directionX * speed;
            posY += directionY * speed;
             
         }
         
         
    }
 
 
        
    public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        if(key==KeyEvent.VK_RIGHT){
            directionX = 1;
        }
        if(key ==KeyEvent.VK_DOWN){
            directionY = 1;
        }
        if(key ==KeyEvent.VK_LEFT){
            directionX = -1;
        }
        if(key ==KeyEvent.VK_UP){
            directionY = -1;
        }
        
    }
 
    public void keyReleased(KeyEvent e) {
         int key = e.getKeyCode();
         if(key==KeyEvent.VK_RIGHT||key ==KeyEvent.VK_LEFT){
             directionX=0;
         }
         if(key==KeyEvent.VK_DOWN||key ==KeyEvent.VK_UP){
             directionY=0;
         }
         
        }
        
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2015, 01:21
Ответы с готовыми решениями:

Движущийся графический объект
Используя технологию объектно-ориентированного программирования разработать два...

Убрать очищение канваса при перемещении за экран
Ребят, помогите пожалуйста. В пеинте надо чтобы канвас с фигурами, при...

написать программу движущийся графический объект с двумя способоми с использованием статического объекта и с использованием динамического объекта
Движение закрашенного прямоугольника по треугольному контуру с изменением цвета...

При перемещении сплиттер оставляет следы на контролах
Суть в том что когда я двигаю сплиттер меняя размер левого или правого окна,...

Объект оставляет "след" при движении
Здравствуйте, уважаемые! Моя цель - реализовать движение объектов(фигур) на...

3
DauletSSG
0 / 0 / 0
Регистрация: 16.08.2018
Сообщений: 3
16.08.2018, 10:49 2
Java
1
2
3
4
5
6
7
8
Timer timer = new Timer(1000, new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent arg0) {
               repaint();
            }
        });
        timer.start();
0
VladJava
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 12
27.08.2018, 23:09 3
Это проблема самой Java. Просто поставь на задний план какой-нибудь фон.
0
Bakuard
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 78
28.08.2018, 17:21 4
Обратите внимание на класс Map. Для отрисовки переопределяйте на метод public void paint(Graphics g), а метод
public void paintComponent(Graphics g). Внутри переопределенного метода public void paintComponent(Graphics g) в первую очередь вызывайте super.paintComponent(g), а только потом уже свой код для отрисовки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2018, 17:21

Почему при редактировании может исчезнуть графический объект? (word)
Почему при редактировании может исчезнуть графический объект? (возможно...

QT GraphicsItem - передать сигнал в MainWindow чтобы на лейбле менялось значение при нажатии мишкой на графический объект
С помощью вот этого примера сделал кнопку...

Графический объект
Добрый день, уважаемые форумчане. После длительного общения с поисковиками и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru