Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    passare variabili a funzione

    Ciao a tutti! penso sia un problema banale... io ho una funzione che in base a un parametro in entrata crea una mappa isometrica.
    Questo parametro ha sintassi tipo: {map:[[{"tile":"grass_3","object":""},{"tile":"grass_3"," object":""}],[{"tile":"grass_3","object":""},{"tile":"grass_3"," object":""}]],xpos:0,ypos:0,mapsize:10}
    che crea una mappa di 4 quadrati disposti a 2x2.
    se dovessi disegnare 200 quadrati diventa un problema! allora ho fatto un paio di for così:
    codice:
    var options='{map:[';
    var righe=4, colonne=8;
    for(var r=0;r<righe;r++)
    {
    	options=options+'[';
    	for(var c=0;c<colonne;c++)
    	{
    		if(c<colonne-1){options=options+'{"tile":"grass_3","object":""},';}
    		else{options=options+'{"tile":"grass_3","object":""}';}
    	}
    	options=options+'],';
    }
    options=options+'],xpos:0,ypos:0,mapsize:10}';
    ho provato a stampare la variabile options e metterla nella funzione e va perfettamente, se metto la variabile nella funzione no... come mai?
    io credo (forse mi sbaglio) per via dei monoapici perchè devo scrivere:
    var options='{map:[';
    e non posso scrivere
    var options={map:[;

    come risolvo?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: passare variabili a funzione

    Originariamente inviato da iacoposk8
    , se metto la variabile nella funzione no...
    Vediamo come la metti.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    così va:

    $(document).ready(function(){$('div#map').gameMap( {map[[{"tile":"grass_3","object":""},{"tile":"grass_3"," object":""}],[{"tile":"grass_3","object":""},{"tile":"grass_3"," object":""}]],xpos:0,ypos:0,mapsize:10});

    così no

    $(document).ready(function(){$('div#map').gameMap( options);

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Hai provato a cambiare nome alla variabile? "options" non mi sembra una buona scelta....

    Inoltre ha tutta l'aria di essere un array... se lo crei come stringa lo devi trasfomare usando eval(nomeVariabile)
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    Originariamente inviato da br1
    Hai provato a cambiare nome alla variabile? "options" non mi sembra una buona scelta....
    Come mai? rischio di ambiguità? la cambio!
    Originariamente inviato da br1
    Inoltre ha tutta l'aria di essere un array...
    mmm... non lo so... non penso, perchè se guardi il codice all'inizio ho scritto var options='{map:['; e non var options=new Array();
    però non so... sono un novizio
    Originariamente inviato da br1
    se lo crei come stringa lo devi trasfomare usando eval(nomeVariabile)
    Ora mi leggo l'eval come usarlo

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    la console degli errori dice

    invalid label
    "grass_3","object":""},{"tile":"grass_3","object": ""},{"tile":"grass_3",...

    sulla riga: $('div#map').gameMap(eval(opzioni));

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    ho risolto cambiando le linee in
    var opzioni="$(document).ready(function(){$('div#map') .gameMap({map:[";
    opzioni=opzioni+'],xpos:10,ypos:10,mapsize:20});});';
    e richiamando eval(opzioni); e non $('div#map').gameMap(eval(opzioni));

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.