Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Soluzione per mappa interattiva

    Ciao a tutti, avrei bisogno di qualche consiglio per iniziare un lavoro... devo realizzare una mappa molto simile a questa: http://www.directferries.de/strecken.htm

    Dato che sulla mappa ci saranno da evidenziare molti punti di arrivo e partenza(come nell'esempio sopra) mi chiedo come potrei fare per ottimizzare il tutto, in modo da non creare tantissimi movieclip che appesantiscono solo il filmato.

    Voi come procedereste alla realizzazione di questo lavoro?
    Come fareste tracciare il percorso da un punto all'altro?
    Come ricreereste il lampeggio sotto ogni punto di arrivo e partenza selezionato?

    Mi date qualche consiglio? ...non vorrei partire con il piede sbagliato!

    Grazie anticipatamente!


  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    la mappa che hai posto all'attenzione mi sembra una semplice realizzazione frame by frame con un comando del tipo

    on(rollover){
    this.gotoAndPlay(2);
    altri.gotoAndStop(1);// ovviamente questo andrebbe fatto per ogni clip presente
    }

    chiaramente una struttura del genere andrebbe ottimizzata, magari inserendo tutti i nomi dei clip in un array ed effettuando un ciclo su di esso, in modo da risparmiare diverse righe di codice, ma in ogni caso il posizionamento e l'animazione andrebbero fatti manualmente per ogni clip

    per quanto riguarda il codice, potresti utilizzare un codice del genere, piuttosto semplice se si conoscono i costrutti e le classi utilizzate

    Codice PHP:
    var lista = ["Londra""Parigi""Roma""Francoforte""Barcellona"];
    var 
    resetAll = function(rootesclude){
        for(var 
    0lista.lengthj++){
            if(
    lista[j] != esclude) {
                
    root[lista[j]].gotoAndStop(1);
            }
        }
    }
    for(var 
    0lista.lengthi++){
        
    this[lista[i]].onRollOver = function(){
            
    this.gotoAndPlay(2);
            
    this._parent.resetAll(this._parentthis._name);
        }


  3. #3
    grazie per la risposta...
    però scusa, mi sono perso dopo on(rollover), ho capito che per il codice on(rollover) ecc ecc ti riferivi all'animazione della tratta, infatti gia avevo immaginato anche io che per far comparire la righina da un punto all'altro bisognava disegnarla a mano frame by frame...

    Il codice che mi hai scritto dopo a cosa si riferisce? non ho capito!
    Sai, non sono un esperto di ActionScript e mi perdo facilmente in quelle righe!

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ok per actionscript, ma il resto dovrebbe essere comprensibile in italiano...

    comunque visto che hai difficoltà con ActionScript, direi che per te è meglio seguire la strada più semplice, anche se più dispendiosa a livello di tempo e risorse

    un'azione base sarebbe quella del rollover, da mettere separatamente in ogni pulsante

    quindi ad esempio, per il pulsante "Barcellona" (nome di istanza del pulsante, inseribile dal pannello delle proprietà, una volta selezionato il pulsante) avremo una situazione del genere

    on(rollOver) {
    this.gotoAndPlay(2);
    Milano.gotoAndStop(1);
    Parigi.gotoAndStop(1);
    Londra.gotoAndStop(1);
    Roma.gotoAndStop(1);
    Francoforte.gotoAndStop(1);
    // ecc...
    }

    un paio (3) di punti su questa situazione

    1. i pulsanti in realtà devono essere tutti MovieClip e non Button, è importante se si vuole utilizzare il "this" per il gotoAndPlay()

    2. ogni movieclip deve essere costituito dal un primo frame stoppato, in cui deve essere visibile solo il pulsante, senza la tratta... mentre dal frame 2 deve partire l'animazione fino all'ultimo frame, quest'ultimo deve essere un altro keyframe stoppato

    3. ogni pulsante/movieclip deve contenere lo stesso codice, modificato per il clip a cui si riferisce (quindi se ho il pulsante Francoforte, dovrò eliminare la riga Francoforte.gotoAndStop(1); e così via per gli altri

    in questo modo semplifichi i passaggi, utilizzi una situazione ripetitiva, ma almeno sei sicuro di quello che stai facendo... l'alternativa sarebbe di complicare un attimo la situazione con Actionscript, snellendo la struttura grazie ad un array e ad un ciclo for e scrivendo il codice una sola volta sulla timeline principale, invece di scriverla in ogni clip

    provo comunque a commentare il codice che ho scritto in precedenza, così qualsiasi strada deciderai di percorrere, avrai una scelta in più da considerare

    Codice PHP:
    // creo un array che mi contiene tutti i nomi dei pulsanti utilizzati, sotto forma di stringhe
    var lista = ["Londra""Parigi""Roma""Francoforte""Barcellona"];
    // creo una funzione che riporta tutti i clip al frame 1, escluso l'ultimo in cui è stato fatto il rollover
    // la funzione ha due parametri, uno che indica dove andare a cercare i clip
    // e l'altro che dice quale clip non rimandare al primo frame (sotto forma di stringa)
    var resetAll = function(rootesclude){
        
    // attivo un ciclo che ha come base l'array "lista", in cui ho inserito i nomi dei pulsanti
        
    for(var 0lista.lengthj++){
            
    // se il nome attualmente verificato nell'array è diverso da quello indicato come parametro
            
    if(lista[j] != esclude) {
                
    // allora mando tutti i clip (escluso quello del ciclo) al frame 1
                // utilizzando un metodo di accesso agli elementi presenti in un determinato clip
                // con una sintassi pari a quella di accesso agli elementi di un array
                // per ulteriori informazioni riguardo a questa tecnica, puoi consultare questo link
                // [url]http://livedocs.adobe.com/flash/8_it/main/00001798.html[/url]
                // quello che ti interessa è l'Uso 3
                
    root[lista[j]].gotoAndStop(1);
            }
        }
    }
    // attivo un ciclo che ha come base l'array "lista" in cui ho inserito i nomi dei pulsanti
    for(var 0lista.lengthi++){
        
    // per ogni clip presente nella lista, richiamo il rollover in forma assegnata con la sintassi del punto
        // in questo modo posso richiamare la funzione senza necessità di metterla in ogni clip presente
        
    this[lista[i]].onRollOver = function(){
            
    // dentro alla funzione/evento onRollOver, è come se mi trovassi all'interno del clip a cui fa riferimento
            // quindi quando l'assegnazione viene fatta ad esempio su "Barcellona", il this si riferirà al clip "Barcellona"
            // mando quindi il clip in cui faccio il rollover, al frame 2 per eseguire l'animazione
            
    this.gotoAndPlay(2);
            
    // richiamo la funzione "resetAll" inizializzata in precedenza
            // e gli assegno i due parametri
            // this._parent è un riferimento al clip contenitore di this (es. "Barcellona") e potrebbe essere ad esempio _root
            // this._name è un riferimento al nome del clip (sotto forma di stringa) 
            // e ci consente di escludere tale clip dalla lista di quelli che devono tornare al frame 1
            
    resetAll(this._parentthis._name);
        }

    è tutto, spero che risulti più chiaro e sfruttabile

  5. #5
    Grazie 1000 and80
    Effettivamente, date le mie conoscenze io sarei per la prima ipotesi che sicuramente riuscirei a gestire meglio, però ho da chiederti un paio di cose:
    I miei porti/destinazioni, sono circa 75, quindi con il primo metodo da te suggeritomi, mi chiedo: non verrà poi troppo pesante/lenta la mappa? cioè flash lavorerebbe bene se poi all'interno di ogni clip c'è tutto quel codice (.gotoAndPlay - .gotoAndStop) per far partire e stoppare le animazioni?

    e poi ancora una cosa: io inizialmente avevo pensato di racchiudere ogni animazione delle varie tratte all'interno di tante clip sulla timeline e poi raggiungerle ogni volta tramite un banale on (rollOver) { gotoAndPlay(0000);}

    ...così facendo, non risparmieri tutto quel codice per stoppare le altre animazioni? cioè mi basterebbero solo due righe invece di tutte quelle Milano.gotoAndStop(1); Parigi.gotoAndStop(1); Londra.gotoAndStop(1); Roma.gotoAndStop(1); ecc ecc ... che dici, forse mi perdo su qualcosa? o potrebbe funzionare anche così?

    Grazie ancora per le risposte! A presto

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Scellino02
    I miei porti/destinazioni, sono circa 75, quindi con il primo metodo da te suggeritomi, mi chiedo: non verrà poi troppo pesante/lenta la mappa? cioè flash lavorerebbe bene se poi all'interno di ogni clip c'è tutto quel codice (.gotoAndPlay - .gotoAndStop) per far partire e stoppare le animazioni?
    in effetti potrebbe essere, ma forse più come peso del file finale piuttosto che come velocità nelle animazioni

    Originariamente inviato da Scellino02
    e poi ancora una cosa: io inizialmente avevo pensato di racchiudere ogni animazione delle varie tratte all'interno di tante clip sulla timeline e poi raggiungerle ogni volta tramite un banale on (rollOver) { gotoAndPlay(0000);}

    ...così facendo, non risparmieri tutto quel codice per stoppare le altre animazioni? cioè mi basterebbero solo due righe invece di tutte quelle Milano.gotoAndStop(1); Parigi.gotoAndStop(1); Londra.gotoAndStop(1); Roma.gotoAndStop(1); ecc ecc ... che dici, forse mi perdo su qualcosa? o potrebbe funzionare anche così?
    anche questo potrebbe essere un metodo valido in effetti, anche se dovresti stare parecchio attento alla gestione delle animazioni e dei posizionamenti

  7. #7
    Ok, grazie ancora per i consigli... ora inizio il lavoro e vedo un po come và!

    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.