2017-10-25 2 views
0

Also ich versuche, Schauspieler Modelle zu laden, und schließlich wird diese Klasse ziemlich groß werden. Ich möchte also nicht wirklich alles in meinem Entity-Array schreiben müssen (Zeile 40). Gibt es eine effizientere Möglichkeit, meine Actor-Modelle zu speichern? Indizierung verwenden?Können Sie in Java zu bestimmten Indizes eines Arrays schreiben?

Mein Code sieht aus wie ..

12. public static Entity[] callActors(Loader loader) { 
13. 
14.  //Earth Entity Actor   
15.  model = OBJLoader.loadObjModel("moon", loader); 
16.  texture = new ModelTexture(loader.loadTexture("MoonMap1024x1024")); 
17.  staticModel = new TexturedModel(model,texture); 
18.  texture = staticModel.getTexture(); 
19.  texture.setShineDamper(10); 
20.  texture.setReflectivity(0); 
21.  //Assigned an Entity Actor 
22.  Entity entity1 = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);  
23.  
... 
39. 
40.  Entity[] entityArray = {entity1,entity2,entity3}; 
41.  
42.  return entityArray; 
43. } 

Gibt es eine Möglichkeit Indizierung wie dies in Zeile zu verwenden, 22 Entity[] entityArray[1] = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1); statt 40 alle Akteure auf die Entität Array auf einmal (Zeile schreiben)

+0

'Entity [] = {entityArray Entity1, Entity2, entity3};' ist effektiv das gleiche wie 'Entity [] = new entityArray Entity [3]; entityArray [0] = neue Entität (staticModel, new ... etc); entityArray [1] = new ... etc', wenn du das fragst. –

Antwort

1

Sie können Array vom Typ Entity mit einer bestimmten Größe deklarieren und Elemente mithilfe der Indizierung hinzufügen. Sie können auch die Indexvariable pflegen.

Entity[] arr = new Entity[10]; 
arr [0]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 

OR

Entity[] arr = new Entity[10]; 
int i=0; 
arr [i]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 
i++; 
arr [i]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 
i++; 
+0

Vielen Dank! Muss ich das auch erklären, wenn ich die endgültige Größe meines Arrays kenne? – TheSpiceHoarder

+0

@TheSpiceHoarder, Wenn Sie Array verwenden, müssen Sie die endgültige Größe kennen. Auf der anderen Seite, wenn die Größe variiert, können Sie stattdessen "ArrayList" versuchen. – Alex

+0

@TheSpiceHoarder, um Array zu verwenden, müssen wir seine Größe deklarieren. Wenn die Größe unvorhersehbar ist, können wir stattdessen ArrayList verwenden. – Tejendra

0

nicht sicher, ob ich Sie richtig verstanden habe, aber wenn Sie auf komfortable Weise das Array init Sie es wie folgt tun:

Entity[] arr = new Entity[] {entity1, entity2, enttiy3}; 

Wenn Sie bestimmte Indizes festlegen möchten, können Sie verwenden hashMap (auch Operationen erhalten wird schneller), tun sie es wie folgt aus:

HashMap<Integer, Entitiy> Entity = new HashMap<Integer, Entitiy>(); 

Nützliche Links:

HashMap in Java

Arrays in java

0

Gibt es eine Möglichkeit der Indizierung so zu verwenden, bei Linie 22
Entity [] entityArray [1] = new Entity (staticModel, neue Vector3f (-1.40f, 1, -6.0f) 0,0,0,1); anstatt alle Akteure auf einmal in das Entity-Array zu schreiben (Zeile 40)?

Sie müssen das Array-Symbol ([]) nicht verwenden, während Sie versuchen, auf eine Entität zuzugreifen. Da entityArray [1] ein Entity bedeutet (an der Position 1 in Array entityArray gespeichert sind), können Sie einfach schreiben:

Entity[] entityArray = new Entity[ARRAY_SIZE]; 
entityArray[1] = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 

Wenn Sie jedoch die Datenstruktur zu konstruieren, nachdem Sie Ihre Einheiten initialisiert haben, können Sie kann den gleichen Code verwenden, den Sie geschrieben haben.

Verwandte Themen