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

    Azione su menu dinamico creato da array

    Ciao a tutti,

    Intro
    ho creato il seguente script (del quale a richiesta pubblico il sorgente)
    che duplica sulla base si un array (col metodo attach movie) un clip chiamato
    bottone che contiene all'interno un bottone con l'effetto rollover chiamato basebottone.
    Fino a qui tutto bene.

    Problema
    Nell'assegnare l'azione al bottone basebottone col metodo onRelease ho provato con un semplice:
    codice:
    _root.gotoAndStop(pagina);
    Il problema è che la variabile pagina è uguale in tutti i bottoni e non viene ricalcolata col ciclo for come avviene invece per le varie istanze dei bottoni.
    Come posso risolvere ilproblema?
    Esiste in metodo per assegnare dei nomi di variabile dinamicamente o un metodo alternativo per risolvere questo errore?

    Grazie mille,
    Dav aka Azote

    Codice

    codice:
    // Lista label
    var menu:Array = ["LINK1","LINK2","LINK3"];
    
    // Spazio in pixel tra le label
    var spazio = 0;
    var defaultX = 85;
    var defaultY = 45;
    
    // Nome clip istanza in libreria
    var istanza = "bottone"; 
    
    // Ed ora lo script!
    for (i in menu) {
    var depth:Number = _root.getNextHighestDepth();
    istanzapiu = istanza+i;
    attachMovie(istanza, istanzapiu, depth);
    var newY:Number = i * (_root[istanzapiu]._height + spazio);
    attachMovie(istanza, istanzapiu, depth);
    setProperty(istanzapiu, _y, newY + defaultY);
    setProperty(istanzapiu, _x, defaultX);
    _root[istanzapiu].etichetta = menu[i];
    
    
    /*
    QUI NON VA E MI BECCA SOLO L'ULTIMA VARIABILE!!
    */
    
    _root[istanzapiu].basebottone.onRelease = function () {
    pagina = _root[istanzapiu].etichetta;
    trace ("Label pagina: "+ pagina);
    _root.gotoAndStop(pagina);
    };
    
    /*
    FINE ERRORE
    */
    
    trace(menu[i]);
    trace(newY);
    trace(depth);
    }

  2. #2
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    codice:
    // Lista label
    var menu:Array = ["LINK1","LINK2","LINK3"];
    
    // Spazio in pixel tra le label
    var spazio = 0;
    var defaultX = 85;
    var defaultY = 45;
    
    // Nome clip istanza in libreria
    var istanza = "bottone"; 
    
    // Ed ora lo script!
    for (i in menu) {
    var depth:Number = _root.getNextHighestDepth();
    istanzapiu = istanza+i;
    attachMovie(istanza, istanzapiu, depth);
    var newY:Number = i * (_root[istanzapiu]._height + spazio);
    attachMovie(istanza, istanzapiu, depth);
    setProperty(istanzapiu, _y, newY + defaultY);
    setProperty(istanzapiu, _x, defaultX);
    _root[istanzapiu].etichetta = menu[i];
    
    
    /*
    QUI NON VA E MI BECCA SOLO L'ULTIMA VARIABILE!!
    */
    trace(istanzapiu)
    _root[istanzapiu].basebottone.onRelease = function () {
       pagina = _root[istanzapiu].etichetta;
        trace ("Label pagina: "+ pagina);
       _root.gotoAndStop(pagina);
    };
    
    /*
    FINE ERRORE
    */
    
    trace(menu[i]);
    trace(newY);
    trace(depth);
    }
    che valore ti da il trace in bold?
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    quando "apri" un evento, seppur si trovi dentro al ciclo, non ti prende la variabile del momento perchè effettivamente quando quell'evento verrà richiamato, il ciclo sarà concluso da un pezzo... è una questione di tempi discordanti... nel tuo caso dovresti risolvere semplicemente utilizzando il this._parent dentro al pulsante

    _root[istanzapiu].basebottone.onRelease = function () {
    pagina = this._parent.etichetta;
    trace ("Label pagina: "+ pagina);
    _root.gotoAndStop(pagina);
    };

  4. #4

    Grazie mille ad entrambi!
    Il codice di And80 funziona perfettamente..
    Sapevo bene che c'era un problema di tempi discordanti
    ed avevo provato con this.etichetta, ma il _parent non l'avevo mai usato
    Ancora grazie infinite!
    Dav

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.