Perfomance Probleme beim eigenen Editor

janb14

Mitglied
Hey Leute ich brauche einmal euren Rat.Ich arbeite derzeit an einem Editor für mein 2D Adventure Game.Bis vor kurzem lief auch alles wunderbar.Doch seit einiger Zeit habe ich mit heftigen Performance Problemen innerhalb der Editoroberfläche zu kämpfen.Ich könnte es mir an meiner heufigen nutzung verschiedener listener erklären das er etwas bockt,aber ich wollte nochmal eure Meinug einholen.Leider ist der Editor in eriner einzigen Klasse verpackt und umfasst 700 Zeilen was das Lesen hier etwas erschweren könnte ;) Trotzdem denke ich das es einen Versuch wert ist.
Hier der Code:
Java:
package com.Game.Screens;

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.border.Border;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

import com.Game.Controller;
import com.Game.Game;
import com.Game.Entitys.CoreObject;
import com.Game.Entitys.Player;
import com.Game.Enums.GameState;
import com.Game.Objects.Block;
import com.Game.Utils.BufferedImageLoader;
import com.Game.libs.Reference;

public class Leveleditor implements Runnable{
	
	private JFrame frame_editor;
	private int WIDTH = Game.WIDTH;
	private int HEIGHT = Game.HEIGHT;
	private JScrollPane scrollPane_World,scrollPane_Menu;
	private JPanel MenuPanel,ViewPanel,contentPane_world,SelectionPanel,WorldPanel;
	private JButton button_newworld,button_saveworld;
	private String Menu_HoveredObject;
	private BufferedImage ObjectImage,Selection_ObjectImage;
	private selectionObject selection; 
	private Controller edit_controll = new Controller();
	private HashMap<Float, JLabel> displayedObjects = new HashMap<Float, JLabel>();
	
	private float objectcounter = 0;
	private int verticalscrollcount = 0;
	private int horizontalscrollcount = 0;
	
	
	
	BufferedImageLoader imageloader = new BufferedImageLoader();
	
	private void init(){
		//-------------------------------------------------------------------------------------
		frame_editor = new JFrame("World Editor");
		frame_editor.setSize(WIDTH, HEIGHT);
		frame_editor.setFocusable(true);
		frame_editor.setLocationRelativeTo(null);
		frame_editor.setMinimumSize(new Dimension(400,400));
		frame_editor.setResizable(true);
		
		
		WorldPanel = new JPanel(null){
		/**
			 * 
			 */
			private static final long serialVersionUID = 6595017163003318848L;

		public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.WHITE);
            g.fillRect(0, 0, WorldPanel.getPreferredSize().width, WorldPanel.getPreferredSize().height);
			}
        };
        
        
        
		WorldPanel.setPreferredSize(new Dimension(500,500));
		
		scrollPane_World = new JScrollPane(WorldPanel);
		scrollPane_World.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scrollPane_World.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		
		scrollPane_World.setBounds(50, 30, WIDTH-300,HEIGHT-100);
        
        
        
        MenuPanel = new JPanel(null);
        MenuPanel.setBounds(WIDTH-230,30, 210,HEIGHT-100);
        Border border_MenuPanel = BorderFactory.createLineBorder(Color.darkGray, 3);
        MenuPanel.setBorder(border_MenuPanel);
        MenuPanel.add(createObjektlist());
        
        ViewPanel = new JPanel(null);
        Border border_ViewPanel = BorderFactory.createLineBorder(Color.RED, 3);
        ViewPanel.setBorder(border_ViewPanel);
        ViewPanel.setBounds(3,HEIGHT/4*1,204,HEIGHT-456);
        MenuPanel.add(ViewPanel);
        
        SelectionPanel = new JPanel(null);
        SelectionPanel.setBounds(3,HEIGHT/4*2,204,HEIGHT-300);
        SelectionPanel.setBorder(border_ViewPanel);
        MenuPanel.add(SelectionPanel);
        
        button_newworld = new JButton("New");
        button_newworld.setBounds(5, 1, WIDTH/15, HEIGHT/22);
        	
       
        
        
        
        button_saveworld = new JButton("Save");
        button_saveworld.setBounds(5+button_newworld.getWidth(), 1, WIDTH/13, HEIGHT/22);
        
       
        
        contentPane_world = new JPanel(null);
        contentPane_world.setPreferredSize(new Dimension(WIDTH, HEIGHT));
       
        
        contentPane_world.add(scrollPane_World);
        contentPane_world.add(MenuPanel);
        
        contentPane_world.add(button_newworld);
        contentPane_world.add(button_saveworld);
        
        frame_editor.setContentPane(contentPane_world);
        
        addlistener();
		
        frame_editor.setVisible(true);
		
		//-------------------------------------------------------------------------------------
		
	}
	
	private void addlistener(){	
		frame_editor.addWindowListener( new WindowAdapter() { 
		    @Override
		    public void windowClosing(WindowEvent e) {
		       Game.state = GameState.Menu;
		       try {
				Game.game.leveledit.join();
			} catch (InterruptedException e1) {
				e1.printStackTrace();
			}
		       Game.game.leveledit = null;
		    }
		});
		
		frame_editor.addWindowStateListener( new WindowAdapter() {
		    public void windowStateChanged(WindowEvent evt) {
		        int oldState = evt.getOldState();
		        int newState = evt.getNewState();
		    
		        if ((oldState & Frame.ICONIFIED) == 0
		            && (newState & Frame.ICONIFIED) != 0) {
		            // Frame was iconized
		        } else if ((oldState & Frame.ICONIFIED) != 0
		            && (newState & Frame.ICONIFIED) == 0) {
		            // Frame was deiconized
		        }
		        if ((oldState & Frame.MAXIMIZED_BOTH) == 0
		            && (newState & Frame.MAXIMIZED_BOTH) != 0) {
		        	resizeFrame();
		            // Frame was maximized
		        } else if ((oldState & Frame.MAXIMIZED_BOTH) != 0
		            && (newState & Frame.MAXIMIZED_BOTH) == 0) {
		        	resizeFrame();
		            // Frame was minimized
		        }
		    }
		});
		
		frame_editor.addComponentListener(new ComponentListener() {
			@Override
			public void componentShown(ComponentEvent arg0) {
			}
			@Override
			public void componentResized(ComponentEvent arg0) {
				resizeFrame();
			}

			@Override
			public void componentHidden(ComponentEvent e) {	
			}
			@Override
			public void componentMoved(ComponentEvent e) {
			}
		});
		
		scrollPane_World.addMouseListener(new MouseListener(){
			@Override
			public void mouseClicked(MouseEvent arg0) {
				boolean testofintersection = false;
				if (arg0.getButton() == MouseEvent.BUTTON1 && selection != null && edit_controll.intersecObject(new Rectangle(arg0.getX(),arg0.getY(),selection.getWidth(),selection.getHeight())) != null){
					System.err.println("INTERSECTION WITH ANOTHER OBJECT ON SCREEN!!!!");
					testofintersection = true;
				}
				
				if (arg0.getButton() == MouseEvent.BUTTON3 && edit_controll.intersecObject( new Rectangle(arg0.getX(),arg0.getY(),1,1)) != null){
					CoreObject event_oject = edit_controll.intersecObject( new Rectangle(arg0.getX(),arg0.getY(),1,1));
					float id = event_oject.getId();
					edit_controll.removeObject(event_oject);
					System.out.println("Object removed");
					JLabel label = displayedObjects.get(id);
					WorldPanel.remove(label);
					WorldPanel.repaint();
					
				}
		
			    if (arg0.getButton() == MouseEvent.BUTTON1 && selection != null && new Rectangle(WorldPanel.getPreferredSize()).contains(arg0.getPoint()) && testofintersection == false){
			    	if(Controllertranslation(edit_controll,arg0.getPoint(),selection.getType(),selection.getWidth(),selection.getHeight(),selection.getImage())){
			    		JLabel placing_object = new JLabel(new ImageIcon(selection.getImage()));
						placing_object.setBounds(arg0.getX()+horizontalscrollcount,arg0.getY()+verticalscrollcount, selection.getImage().getWidth(), selection.getImage().getHeight());
						
						
						
						WorldPanel.add(placing_object);
						displayedObjects.put(objectcounter-1, placing_object);
						
						WorldPanel.repaint();
						System.out.println("Object "+selection.getName()+" was placed." );
			    	}
				}
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
			}
		});
	
		scrollPane_World.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){

			@Override
			public void adjustmentValueChanged(AdjustmentEvent arg0) {
				verticalscrollcount = arg0.getValue();
				
			}
		});;
		
		scrollPane_World.getHorizontalScrollBar().addAdjustmentListener(new AdjustmentListener(){

			@Override
			public void adjustmentValueChanged(AdjustmentEvent arg0) {
				horizontalscrollcount = arg0.getValue();
			}
		});;

		button_newworld.addActionListener(new ActionListener() {
			 
	            public void actionPerformed(ActionEvent e)
	            {
	            	final JFrame worldcreator = new JFrame("New World");	
	            	worldcreator.setSize(WIDTH/4, HEIGHT/4);
	            	worldcreator.setFocusable(true);
	            	worldcreator.setLocationRelativeTo(null);
	            	worldcreator.setResizable(false);
	            	
	            	JButton button_createworld = new JButton("Save");
	            	
	            	WindowListener exitListener = new WindowAdapter() {

	                    @Override
	                    public void windowClosing(WindowEvent e) {
	                    	 frame_editor.setEnabled(true);
	                    }
	                };
	                worldcreator.addWindowListener(exitListener);
	                
	                JPanel contpane = new JPanel(null);
	                
	                JLabel newwidthinfo = new JLabel("World width:");
	                newwidthinfo.setBounds(5,worldcreator.getHeight()/4,worldcreator.getWidth()/3,worldcreator.getHeight()/5);
	                contpane.add(newwidthinfo);
	                
	                final JTextField newwidth = new JTextField("500");
	                newwidth.setBounds((int) (worldcreator.getWidth()/2.5),worldcreator.getHeight()/4,worldcreator.getWidth()/5,worldcreator.getHeight()/5);
	                contpane.add(newwidth);
	                
	                JLabel newheightinfo = new JLabel("World height:");
	                newheightinfo.setBounds(5,worldcreator.getHeight()/15,worldcreator.getWidth()/3,worldcreator.getHeight()/5);
	                contpane.add(newheightinfo);
	                
	                final JTextField newheight = new JTextField("500");
	                newheight.setBounds((int) (worldcreator.getWidth()/2.5),worldcreator.getHeight()/15,worldcreator.getWidth()/5,worldcreator.getHeight()/5);
	                contpane.add(newheight);
	                
	            	
	            	button_createworld.addActionListener(new ActionListener() {
	        			 
	                     public void actionPerformed(ActionEvent e)
	                     {
	                    	 worldcreator.dispose();
	                    	 frame_editor.setEnabled(true);
	                    	 frame_editor.toFront();
	                    	 WorldPanel.setPreferredSize(new Dimension(Integer.parseInt(newwidth.getText()),Integer.parseInt(newheight.getText())));
	                    	 WorldPanel.repaint();
	                     }
	         		});
	            	button_createworld.setBounds(worldcreator.getWidth()/3,worldcreator.getHeight()/2,worldcreator.getWidth()/3,worldcreator.getHeight()/5);
	            	contpane.add(button_createworld);
	            	
	            	worldcreator.setContentPane(contpane);
	            	worldcreator.setVisible(true);
	            	frame_editor.setEnabled(false);
	            }
			});
	
		button_saveworld.addActionListener(new ActionListener(){
	        	
				@Override
				public void actionPerformed(ActionEvent arg0) {
					File file = new File (Reference.Resourcepath);
					Desktop desktop = Desktop.getDesktop();
					try {
						desktop.open(file);
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
	        });
	}
	
	private JScrollPane createObjektlist(){
		
		final JTree tree = new JTree(createTree());
		tree.setDragEnabled(true);
		
		final String[] bannedhoveritems_array = new String[] {"Enviroment","Objects","Entitys"};
		final String[] bannedhoveritemspath_array = new String[] {};// for string which should be erased out of the dynamic generated paths
		
		
		final Set<String> bannedhoveritems = new HashSet<String>(Arrays.asList(
				bannedhoveritems_array
			));
		
		tree.addMouseListener(new MouseListener() {

			@Override
			public void mouseClicked(MouseEvent e) {
				TreePath tp = ((JTree)e.getSource()).getPathForLocation(e.getX(), e.getY());

	           	 if(tp != null)
	             {
							String test 			= (tp.toString().replace("[","")).replace("]","");;
							String lastSelection 	= (test.substring(test.lastIndexOf(",")+1).replace(" ",""));
	                    	
	                    	if (!bannedhoveritems.contains(lastSelection))
	                    	{
	                    		if (selection == null || selection.getName() != lastSelection){
	                    		
	                    		SelectionPanel.removeAll();
	            				SelectionPanel.repaint();
	            				
	                    		String Objectpath = (Reference.Resourcepath+((tp.toString().replace("[", "")).replace(",", "/")).replace(" ", "").replace("]", "/"));
	                    		for (int k = 0;bannedhoveritemspath_array.length>k;k++){
	                    			Objectpath = Objectpath.replaceAll(bannedhoveritemspath_array[k],"").replace("///", "/");
	                    		}
	                    		try {
	                    			Selection_ObjectImage = imageloader.loadImage(Objectpath+"image.png");
	                    			
	                    		} catch (IOException e1) {
	                    			e1.printStackTrace();
	                    		}
	                    		
	                    		BufferedReader br = null;
	        					String ObjectType = null;
	        			        String ObjectWidth = null;
	        			        String ObjectHeight = null;
	        			        
	        					try {
	        					    br = new BufferedReader(new FileReader(new File(Objectpath+"info.txt")));
	        			            String line = null;
	        			            int counter = 1;
	        			           
	        			            
	        			            while((line = br.readLine()) != null) {
	        			            	System.out.println(line);    
	        			            	switch(counter){
	        			            	case 1:
	        			            		ObjectType = line;
	        			            		counter++;
	        			            		break;
	        			            	case 2:
	        			            		String[] ObjectBounds = line.split("x");
	        			            		ObjectWidth = ObjectBounds[0];
	        			            		ObjectHeight = ObjectBounds[1];
	        			            		counter++;
	        			            		break;
	        			            	}
	        			            }
	        			        } catch(FileNotFoundException er) {
	        			            er.printStackTrace();
	        			        } catch(IOException er) {
	        			            er.printStackTrace();
	        			        } finally {
	        			            if(br != null) {
	        			                try {
	        			                    br.close();
	        			                } catch(IOException er) {
	        			                    er.printStackTrace();
	        			                }
	        			            }
	        			        }
	                    		
	                    		
		                    	selection = new selectionObject(lastSelection, Integer.parseInt(ObjectWidth), Integer.parseInt(ObjectHeight), ObjectType,Objectpath, Selection_ObjectImage);
	                    		//System.out.println("Objected dragged :"+lastSelection);
	                    		//System.out.println(Objectpath);
	                    		
	                    		JLabel selection_label = new JLabel("Object:    "+lastSelection);
	                    		selection_label.setBounds(3,SelectionPanel.getHeight()/4,SelectionPanel.getWidth(),20);
	                    		
	                    		SelectionPanel.add(selection_label);
	                    		
	                    		SelectionPanel.repaint();
	                    		
	                    		}
	                        }
	             }
					
				
				
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
			}
			
			
		});
		
		tree.addMouseMotionListener(new MouseMotionListener() {

            @Override
            public void mouseDragged(MouseEvent e) {
            }
            
            
            

            @Override
            public void mouseMoved(MouseEvent e) {
            	ViewPanel.removeAll();
            	ViewPanel.repaint();

                TreePath tp = ((JTree)e.getSource()).getPathForLocation(e.getX(), e.getY());

                if(tp != null)
                {
                    ((JTree)e.getSource()).setCursor(new Cursor(Cursor.HAND_CURSOR));
                    if (Menu_HoveredObject != tp.toString()){
                    	
						String test 			= (tp.toString().replace("[","")).replace("]","");;
						String lastSelection 	= (test.substring(test.lastIndexOf(",")+1).replace(" ",""));

                    	if (!bannedhoveritems.contains(lastSelection)){
                    		String Objectpath = (Reference.Resourcepath+((tp.toString().replace("[", "")).replace(",", "/")).replace(" ", "").replace("]", "/"))+"image.png";
                    		for (int k = 0;bannedhoveritemspath_array.length>k;k++){
                    			Objectpath = Objectpath.replaceAll(bannedhoveritemspath_array[k],"").replace("///", "/");
                    		}
	                    	creatObjectInfo(Objectpath);
	                    	Menu_HoveredObject = tp.toString();
	                    	       	
	                    	ViewPanel.repaint();
                    	}
                    	else{
                    		
                    	}
                    	
                    	
                    }
                }
                else
                {
                    ((JTree)e.getSource()).setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                }
            }
     });
		
		scrollPane_Menu = new JScrollPane(tree);
		scrollPane_Menu.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		scrollPane_Menu.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane_Menu.setBounds(3, 3,204,HEIGHT-250);
		
        return scrollPane_Menu;
	}
	
	public static  TreeNode createTree() {
		
	    
        DefaultMutableTreeNode root = new DefaultMutableTreeNode( "Objects" );

        String[] paths = new String[3];
        paths[0] = Reference.Enviromentpath;
        paths[1] = Reference.Entitypath;
        //paths[2] = System.getProperty("user.dir")+"/bin/Players/Sprinters/";
        
        DefaultMutableTreeNode[] object_sorts = new DefaultMutableTreeNode[3];
        object_sorts[0] =  new DefaultMutableTreeNode( "Enviroment" );
        object_sorts[1] = new DefaultMutableTreeNode( "Entitys" );
        //object_sorts[2] = new DefaultMutableTreeNode( "Sprinters" );
        
        
        for (int t = 0; t < 2; t++) {
        	
    	File folder = new File(paths[t]);
    	File[] listOfFiles = folder.listFiles();
    	
    	DefaultMutableTreeNode[] obj  = new DefaultMutableTreeNode[listOfFiles.length];
    	
    	    for (int i = 0; i < listOfFiles.length; i++) {
    	    	obj[i] = new DefaultMutableTreeNode(listOfFiles[i].getName() );
    	    }
    	    
    	    for (int i = 0; i < listOfFiles.length; i++) {
    	    	object_sorts[t].add(obj[i]); 
    	    }
    	    
        }
        
	    
        root.add( object_sorts[0] );
        root.add( object_sorts[1] );
        //root.add( object_sorts[2] );
        
        return root;
    }

	private void creatObjectInfo(String ImagePath){
		if (new File(ImagePath).exists()){
			
		
			try {
				ObjectImage = imageloader.loadImage(ImagePath);
				ImageIcon icon = new ImageIcon(ObjectImage);
				JLabel ObjectImageLabel = new JLabel(icon);
				if (ObjectImage.getWidth() <= 75 && ObjectImage.getHeight() <= 75){
					ObjectImageLabel.setBounds(5,30,ObjectImage.getWidth(),ObjectImage.getHeight());
				}
				
				ViewPanel.add(ObjectImageLabel);
			} catch (IOException e) {
			//	e.printStackTrace();
			}
		}
		else{
			System.err.println("File "+ImagePath+" isnt reachable!!!");
		}
	}
		
	
	private void resizeFrame(){
		Dimension dim = frame_editor.getSize();
		WIDTH = dim.width;
		HEIGHT = dim.height;
		scrollPane_World.setBounds(50, 30, WIDTH-300,HEIGHT-100);
		MenuPanel.setBounds(WIDTH-230,30, 210,HEIGHT-100);
		scrollPane_Menu.setBounds(3, 3,204,HEIGHT/4*2);
        ViewPanel.setBounds(3,(int) (HEIGHT/4*2.05),204,(int) (HEIGHT/4*0.9));
        SelectionPanel.setBounds(3,(int) ((HEIGHT/4*2.05)+(HEIGHT/4*0.9)),204,(int) (HEIGHT/4*0.37));
        
	}
	
	private boolean Controllertranslation(Controller controll,Point location,String type,int width,int height,BufferedImage image){
		
		switch(type){
			case "Block":
				controll.addObject(new Block(location.x, location.y,(int) objectcounter, image));
				System.out.println("Block added to Controller.");
				objectcounter++;
				break;
			case "Player":
				if (!edit_controll.findInstance(edit_controll.getObjects(), "com.Game.Entitys.Player")){
					controll.addObject(new Player(location.x, location.y,(int) objectcounter, Game.game.tex));
					System.out.println("Player added to Controller.");
					objectcounter++;
					break;
				}
				else{
					System.out.println("Player allready added.");
					return false;
				}
		}
		return true;
		
	}

	@Override
	public void run() {
		init();
	}
}	


class selectionObject{
	String name,path,Type;
	int Width,Height;
	BufferedImage image;
	
	public selectionObject (String name,int Width,int Height,String Type,String path,BufferedImage image){
		this.name  = name;
		this.Width = Width;
		this.Height = Height;
		this.Type = Type;
		this.path  = path;
		this.image = image;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public BufferedImage getImage() {
		return image;
	}

	public int getWidth() {
		return Width;
	}

	public int getHeight() {
		return Height;
	}

	public String getType() {
		return Type;
	}	
}
 

Ruzmanz

Top Contributor
Habe da jetzt nur mal schnell drüber geguckt, viel kann man da nicht verstehen. Bilder läd man zu Beginn der Applikation / des Levels nur einmal und kopiert diese wenn notwendig nur im RAM. In nicht-temporären Schleifen sollte man Festplattenzugriffe und die Initialisierung von größeren Arrays vermeiden.

Java:
public void mouseMoved(MouseEvent e) {
//...
creatObjectInfo(Objectpath); // <- So nicht.
//...
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Scaling Probleme Spiele- und Multimedia-Programmierung 6
J Probleme bei Pong Spiele- und Multimedia-Programmierung 9
D Java Bomberman Probleme java.lang.NullPointerException Spiele- und Multimedia-Programmierung 1
J YoutubeAPI Livestream probleme Spiele- und Multimedia-Programmierung 3
G [LibGDX] Button Klick Probleme Spiele- und Multimedia-Programmierung 1
T Probleme mit JButton Spiele- und Multimedia-Programmierung 5
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
P Probleme mit VLCJ Spiele- und Multimedia-Programmierung 0
F Probleme bei der Soundwiedergabe Spiele- und Multimedia-Programmierung 0
S Probleme bei Breakout - Brick kollision Spiele- und Multimedia-Programmierung 2
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
F BlueJ Ufospiel Probleme Spiele- und Multimedia-Programmierung 1
B Probleme mit AndEngine in Android Spiele- und Multimedia-Programmierung 1
M 2048, 3 kleine Probleme Spiele- und Multimedia-Programmierung 4
A Probleme mit Darstellung von Umgebungen mittels mehrdimensionaler Arrays Spiele- und Multimedia-Programmierung 8
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
K Probleme beim kompilieren von javakara Spiele- und Multimedia-Programmierung 10
Q LWJGL - Alpha-Probleme Spiele- und Multimedia-Programmierung 2
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
K Probleme mit .jar Spiele- und Multimedia-Programmierung 12
L Probleme beim kompilieren von javakara Spiele- und Multimedia-Programmierung 3
D Probleme mit der Runnable jar Datei Spiele- und Multimedia-Programmierung 3
D Probleme mit objekt initializirung mit Mouselistener Spiele- und Multimedia-Programmierung 10
Black_ixx Hintergrund & Koordinaten Probleme Spiele- und Multimedia-Programmierung 2
B Probleme mit Texturen Spiele- und Multimedia-Programmierung 7
Maxim6394 Probleme bei Sidescroller Spiele- und Multimedia-Programmierung 5
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Maxim6394 [Java3D] Probleme mit KeyFrame Animationen Spiele- und Multimedia-Programmierung 9
T Probleme mit Skysphere in Opengl Spiele- und Multimedia-Programmierung 4
B Probleme mit redraw() Spiele- und Multimedia-Programmierung 3
Gossi Quaxlis 2D Tutorial....Probleme nach hinzufügen der Kollisionsabfrage Spiele- und Multimedia-Programmierung 16
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
S Probleme mit Tutorial Spiele- und Multimedia-Programmierung 3
T Probleme mit AffineTransform Spiele- und Multimedia-Programmierung 13
W Probleme mit Mouselook Spiele- und Multimedia-Programmierung 2
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 5
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 2
M [Spiel] Kartenspiel Leben und Tod Tips und Probleme Spiele- und Multimedia-Programmierung 7
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
S Probleme mit JMenu in einem JFrame mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Steev Probleme mit Kameraausrichtung bei ISO-Map Spiele- und Multimedia-Programmierung 3
R MediaPlayer macht Probleme Spiele- und Multimedia-Programmierung 2
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
prakdi Probleme mit Quaxlis tutorial Spiele- und Multimedia-Programmierung 5
D Java Pong Probleme Spiele- und Multimedia-Programmierung 7
T Java Sound Probleme Spiele- und Multimedia-Programmierung 8
P probleme mit key event Spiele- und Multimedia-Programmierung 11
T Bekanntes Heli Spiel -> Aber Probleme damit Spiele- und Multimedia-Programmierung 30
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
O Ampel - Probleme mit der Farbgebung Spiele- und Multimedia-Programmierung 16
F Probleme bei Bewegung Spiele- und Multimedia-Programmierung 7
P Probleme mit Vista und JOGL Spiele- und Multimedia-Programmierung 2
P Probleme mit Wolkenbewegung Spiele- und Multimedia-Programmierung 5
W Probleme mit dem setTextureCoordinate Spiele- und Multimedia-Programmierung 3
D Probleme beim Download von GIF-Bildern Spiele- und Multimedia-Programmierung 4
S Probleme mit dem Licht und dem KeyListener Spiele- und Multimedia-Programmierung 2
L Probleme Bei Pong Programmierung Spiele- und Multimedia-Programmierung 2
D Probleme bei ATI Karten bekannt? Spiele- und Multimedia-Programmierung 4
H Probleme bei Rotation Spiele- und Multimedia-Programmierung 9
X Probleme. Spiele- und Multimedia-Programmierung 2
E Probleme mit Kollisionserkennung ! Spiele- und Multimedia-Programmierung 2
F Probleme mit selbsterstelltem transparenten PNG Spiele- und Multimedia-Programmierung 5
S probleme mit material Spiele- und Multimedia-Programmierung 2
W Probleme beim entfernen von Childs im HauptSceneGraph Spiele- und Multimedia-Programmierung 8
N Pong - noch 2 kleinere Probleme Spiele- und Multimedia-Programmierung 16
M Probleme mit WaveFront-Object - Datei Spiele- und Multimedia-Programmierung 7
B Probleme beim zeichnen Spiele- und Multimedia-Programmierung 15
D Gomoku --- Probleme bei Instanzierung Spiele- und Multimedia-Programmierung 2
G Probleme beim installieren java 3d linux Spiele- und Multimedia-Programmierung 4
G Sound Probleme Spiele- und Multimedia-Programmierung 2
S Probleme mit Canvas! Spiele- und Multimedia-Programmierung 2
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13
C Probleme mit Java3D (sun.awt.DrawingSurface) in Java 5 Spiele- und Multimedia-Programmierung 10
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
N Probleme mit View Spiele- und Multimedia-Programmierung 3
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
T Android App Absturz beim Starten Spiele- und Multimedia-Programmierung 41
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
S [LWJGL] schwarzer Bildschrim beim rendern von .obj Model Spiele- und Multimedia-Programmierung 2
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
M Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion) Spiele- und Multimedia-Programmierung 5
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
C Java3D Lichtquelle beim Beobachter Spiele- und Multimedia-Programmierung 2
W CannotRealizeException (jmf) beim abspielen eines liedes Spiele- und Multimedia-Programmierung 3
aze Problem beim Laden von Obj File Spiele- und Multimedia-Programmierung 3
N Totaler Absturz beim mehrmaligen Abspielen von Sounds Spiele- und Multimedia-Programmierung 5
L Fehlersuche beim Weichzeichner-Algorithmus Spiele- und Multimedia-Programmierung 9

Ähnliche Java Themen

Neue Themen


Oben