6 svar
347 visningar
Boomcrasc078 är nöjd med hjälpen
Boomcrasc078 3 – Fd. Medlem
Postad: 12 maj 2021 14:43

Jag får Cannot set property '0' of undefined utan anledning.

Hej, jag har försökt med den här koden så länge nu och jag fattar fortfarande inte varför den inte funkar. Jag får ett felmeddelande där det står att movingPlatforms är Undefined. Jag har kollat runt på internet hela dagen och de flesta som fått samma felmeddelande har bara inte gjort det till en array utan bara skrivit var array; och inte var array = [];

Jag har programmerat en funktion som ska skapa en plattform som ska kunna röra på sig i mitt platformer spel. Funktionen upprepas med hjälp av function update(). Errormeddelandet kommer på movingPlatforms[xId] = x1 och jag fattar inte varför. Det den ska göra är att den ska sätta ett id i arrayen till x1 som är en kordinat. Helt enkelt så ska plattformen köra mellan x1, y1 till x2, y2 och sen tillbaka, så då ska den starta vid den första kordinaten. Simpelt! Men tydligen inte för koden vägrar att funka!

På nått sätt så fattar den inte att movingPlatforms är en array.

Jag har också gjort så många nollor som jag kan på movingPlatforms eftersom jag vill kunna skapa hur många plattformar som helst och jag vet att man kan lägga till det senare med push. Men jag orkade inte lägga till extra mycket kod så jag tänkte att det var lättare att bara göra massa nollor i förhand.

Viktigt! Jag använder Koda.nu som är en programmeringshemsida för unga att lära sig att koda och dom har lite extra funktioner inbyggda i redigeraren så om du märker att en funktion som t.ex. rectangle(); så är det därför. Varför jag säger detta är för att jag blev missförstådd en annan gång jag frågade på internet att funktionerna inte fanns.

  var movingPlatforms = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  



  function MovingPlatform(xId, yId, stateId, x1, y1, x2, y2, width, height) 
  {

movingPlatforms[xId] = x1
movingPlatforms[yId] = y1
movingPlatforms[stateId] = 2

rectangle(movingPlatforms[xId], movingPlatforms[yId], width, height, "black"); //Om id:na finns med så skapar den en plattform
  
  if (stateId == 2) //Sen så kollar den om den håller på att gå till andra positionen eller första
  {
  movingPlatforms[xId] = x2-movingPlatforms[xId]/100; //Om den går till den andra(från första) så ändrar den sin position lite närmare den andra positionen(x2 och y2)
  movingPlatforms[yId] = y2-movingPlatforms[yId]/100;
    
    if(distance(movingPlatforms[xId], movingPlatforms[yId], x2, y2) <= 30) movingPlatforms[stateId] = 1 //Om den är tillräckligt nära den andra positionen(x2 och y2) så ändrar den riktning till den första positionen (x1 och y1)
    
  } else 
  {
  movingPlatforms[xId] = x1-movingPlatforms[xId]/100; //Om den går till den första(från andra) positionen så ändrar den sin position lite närmare den första(x1 och y1)
  movingPlatforms[yId] = y1-movingPlatforms[yId]/100;
  
    
    if(distance(movingPlatforms[xId], movingPlatforms[yId], x1, y1) <= 30) movingPlatforms[stateId] = 2 //Om den är tillräckligt nära den första positionen(x1 och y1) så ändrar den riktning till den andra positionen (x2 och y2)
    
  }

  }
Lindehaven 820 – Lärare
Postad: 12 maj 2021 17:03

Brukar inte koda så mycket JS så jag har inte provat, men ett antal semikolon tycks saknas (vilket är ett klassiskt fel).

movingPlatforms[xId] = x1;
movingPlatforms[yId] = y1;
movingPlatforms[stateId] = 2;

o s v
Boomcrasc078 3 – Fd. Medlem
Postad: 12 maj 2021 21:43

I koda.nu som jag använder så ska det inte spela någon roll. Det kan vara bättre med semikolon om t.ex. om man skriver på en rad måste man ha det fast om man använder olika rader så ska man inte behöver göra det. Jag försöker att göra det men glömmer bort ibland.

Lindehaven 820 – Lärare
Postad: 15 maj 2021 11:11

Har du provat att skriva in semikolon? Det borde lösa problemet.

Boomcrasc078 3 – Fd. Medlem
Postad: 15 maj 2021 13:09

Jag gjorde det men jag får samma problem

Macilaci 2106
Postad: 15 maj 2021 13:17

Jag har skrivit in koden i koda, kallade funktionen och fick inget felmeddelande.
Hur använder du funktionen?

Kanske överdefinierar du den globala movingPlatforms någonstans.

Macilaci 2106
Postad: 15 maj 2021 13:21 Redigerad: 15 maj 2021 13:23

Du kan debugga koden t.ex. med Chrome devTools. 

Innan du använder variabeln, skriv ut den på console. (console.log(movingPlatforms);)

Svara Avbryt
Close