Visualizzazione dei risultati da 1 a 7 su 7

Discussione: nomi nei cicli con AS3

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    53

    nomi nei cicli con AS3

    nomi nei cicli con AS3

    Ieri avevo aperto questo post in Flash, tuttavia mi sembra più pertinente qui !

    Ciao a tutti quanti,
    sono alle prese con un dilemma dal quale non riesco ad uscire da solo, spero in un vostro aiuto.

    Ho il seguente codice [AS3] che, fra le altre cose, mi crea un oggetto marker con un nome predefinito

    for (var i:uint=0; i<il.length(); i++) {
    ... etc ...
    // Creo un Marker con il nome m
    var m:Marker = new Marker(new LatLng(laLat,laLng), markerOptions);
    ... etc ...
    }

    ... essendo un ciclo con n, o meglio, "i" punti vorrei che ogni Marker avesse il suo nome univoco.

    es: nomemarker="nome"+i

    cosa devo sostituire al posto di m nella riga var m:Marker = new Marker(new LatLng(laLat,laLng), markerOptions); ??

    Grazie a tutti

  2. #2
    Secondo me per qualsiasi cosa devi fare ti conviene mettere tutto dentro un array, e non cambiare il nome della variabile.


    var elencoM:Array = new Array()

    for (var i:uint=0; i<il.length(); i++) {
    ... etc ...
    // Creo un Marker con il nome m
    var m:Marker = new Marker(new LatLng(laLat,laLng), markerOptions);

    elencoM.push(m)
    ... etc ...
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    53
    Grazie Stan,

    tuttavia la tua soluzione sembra non funzionare perchè devo assegnare ai marker m un Mouseevent
    Chiamandosi tutti m quando clicco sopra uno di essi l'azione che ottengo è sempre quella dell'ultima m perchè sovrascrive le altre.

    ciclo For
    var m:Marker = new Marker(new LatLng(laLat,laLng), markerOptions);
    m.addEventListener(MapMouseEvent.CLICK, function(e:MapMouseEvent):void {;
    map.openInfoWindow(new LatLng(laLat,laLng), new InfoWindowOptions({titleHTML: mioTitMarker[i], contentHTML: mioDescrMarker[i]}));
    });
    chiudo for

  4. #4
    Il problema credo sia nell'indice, nel senso che [i] quando viene scatenato l'evento è sempre l'ultimo valore (del ciclo for).

    Dovresti mettere quell'indice dentro una variabile del displyobject che scatena l'evento e leggerla da lì

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    53
    Sì è come dici tu per l'indice.
    Ho provato a cercare nella guida DisplayObject ed è venuto fuori il mondo !!

    In AS2 mi ricordo che si costruiva il nome più o meno in questo modo:

    nome = "m"+i
    _root.[nome] = new Marker(new LatLng(laLat,laLng), markerOptions);

    In AS3 esiste un modo per costruire i miei marker con nomi costruiti sull'indice?

  6. #6
    Provato con:

    m.name = "marker"+i;

    ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    53
    Grazie Kaneda81,
    con .name mi da' errore di proprietà non definita.

    In realtà ho risolto in questo modo:

    ciclo for ...
    var nome:String=il.nome.text()[i];
    var concessionario:String=il.concessionario.text()[i];
    var m:Marker=createMarker(latlng, nome, concessionario);
    chiudo ciclo}

    function createMarker(latlng:LatLng, nome:String, concessionario:String):Marker
    {
    var m:Marker=new Marker(latlng, markerOptions);
    var html:String=""+nome+"
    "+concessionario;
    var indiceID:Number=i
    m.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void{
    m.openInfoWindow(new InfoWindowOptions({contentHTML:html}));
    });
    m.addEventListener(MapMouseEvent.CLICK, function(e:MapMouseEvent):void{
    gotoAndStop(30)
    });
    map.addOverlay(m);
    return m;
    }

    ora mi ritrovo con un altro problema: tirare fuori la variabile indiceID dalla funzione visto che le global non ci sono più in AS3 ... cmq prima di aprire un nuovo post mi leggo quelli che già ci sono.

    Grazie a tutti quelli che hanno partecipato ... alla prossima

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.