Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    92

    testo dinamico che varia quando passo il mouse su uno dei bottoni ( MX 2004 )

    Vorrei realizzare un campo di testo che varia a seconda di quale bottone vado a fare il rollover.
    Spiego in dettaglio:
    x numero di bottoni sullo stage , un solo campo di testo , scorro sul bottone 1 appare la scritta txt.1 , scorro sul bottone2 e appare la scritta txt.2 , quando esco dall'area attiva del bottone la scritta deve sparire.
    Mi servirebbe il codice e possibilmente una spiegazioncina , giusto per non fare la scimmia....
    GRAZIE

  2. #2
    Potresti provare semplicemente così

    // il tuo campo di testo dinamico ha una istanza = "campo_di_testo"

    poi per i tuoi clip che funzionano da bottoni puoi creare:

    MovieClip.prototype.nome=function(){

    this.onRollOver=function(){
    _level0.campo_di_testo=this._name
    }

    this.onRollOut=function(){
    _level0.campo_di_testo=""
    }
    }

    a questo punto puoi semplicemente istanziare tutti i clip (che fungono da bottoni) con

    txt1, txt2,.....txtN

    e poi

    txt1.nome(),txt2.nome() ecc

    o semplicemente

    for(i;i<10;i++){
    this.["txt"+i].nome()
    }


    spero di essermi spiegato

  3. #3
    se hai dei bottoni

    Button.prototype.nome=function(){

    this.onRollOver=function(){
    _level0.campo_di_testo=this._name
    }

    this.onRollOut=function(){
    _level0.campo_di_testo=""
    }
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    92
    Ti ringrazio per la risposta , ma purtroppo non ho capito alcuni passaggi , te li elenco sperando che tu abbia tempo per i chiarimenti.
    premetto che i bottoni sono già posizionati sullo stage.

    Button.prototype.nome=function(){
    qui non conosco il comando "Button.prototype" ; suppongo che al posto di nome io debba scrivere il nome istanza del bottone specifico , giusto?


    this.onRollOver=function(){
    _level0.campo_di_testo=this._name
    }
    qui è abbastanza chiaro...a parte il _level0.Non ho invece capito dove devo inserire il testo...mi apettavo di vedere delle virgolette come nel passaggio successivo , invece c'è un this._name.

    this.onRollOut=function(){
    _level0.campo_di_testo=""
    }
    }
    Questo è limpido il comando fa diventare il campo di testo denominato appunto campo_di_testo vuoto (due virgolette con al centro nessun carattere)

    GRAZIE comunque

  5. #5
    nome è il "nome" del prototype quindi lascia il tutto così


    tu hai deddo che vuoi far apparire txt1, txt2 etc... Giusto ?

    allora ho pensato che se associ ai pulsanti il nome di istanza
    txt1, txt2, ecc

    possiamo dire di stampare direttamente il nome del pulsante
    _level0.campo_di_testo=this._name

    _level0 è la stessa cosa di _root.

    quindi rimane tutto invariato

    codice:
    Button.prototype.nome=function(){ 
    
    this.onRollOver=function(){ 
    _level0.campo_di_testo=this._name 
    } 
    
    this.onRollOut=function(){ 
    _level0.campo_di_testo="" 
    } 
    }

    a questo punto devi associare il protype ai tuoi bottoni
    se sono 3 fai pure txt1.nome(), txt2.nome(), txt3.nome()

    se sono 20

    for(i;i<=20;i++){
    this.["txt"+i].nome()
    }

    se invece al campo di testo dinamico vuoi associare un testo diferente per ogni pulsante del tipo

    "Il mare è bello"
    "La Montagna anche"
    "La collina mi annoia"
    "il Lago mette tristezza"

    allora sarebbe più facile utilizzare un array

    catalogo = new Array(3)
    catalogo[1]="Il mare è bello"
    catalogo[2]="La Montagna anche"
    catalogo[3]="La collina mi annoia"

    dai come istanza ai bottoni p1, p2, p3

    Button.prototype.nome=function(){
    ID=substring(this._name,2,1)

    this.onRollOver=function(){
    _level0.campo_di_testo=_level0.catalogo[ID]
    }

    this.onRollOver=function(){
    _level0.campo_di_testo=""
    }
    }
    p1.nome()
    p2.nome()
    p3.nome()

    Spero che sia più chiaro.

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    92
    adesso è chiaro , ho usato il secondo codice , solo che non mi funziona...non riesco a capire in cosa sbaglio.
    Sembra tutto giusto , il codice è nel fotogramma 1 della linea principale ,
    nello stesso fotogramma ci sono 3 istanze dello stesso pulsante denominate p1 , p2 e p3 e il testo dinamico denominato campo_di_testo.
    Non succede nulla , sicuramente si tratta di un mio errore del cavolo ma non capisco quale possa essere....
    Mi viene un dubbio : non è che devo inserire qualche cosa nella casella var della finestra proprietà relativa al campo di testo dinamico?
    Ho anche sostituito nell'ultima parte

    this.onRollOver=function(){
    _level0.campo_di_testo=""

    onRollOver con onRollOut

    ma niente da fare....
    CIAO

  7. #7
    campo_di_testo è il nome della variabile e NON l'istanza.


    _level0.campoditesto=.......... (variabile)

    _leve0.campoditesto.text =......(istanza)

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    92
    Continuo ad approfittare della tua immensa pazienza.

    Funziona , ma solo in parte.
    Se metto un solo pulsante simbolo1 nello stage e lo nomino p1 , al passaggio del mouse su p1 appare la scritta (nel campo di testo dinamico) :il mare è bello" e fin qui tutto OK.
    Se rinomino il pulsante p2 o p3 le scritte che appaiono sono rispettivamente :"la montagna anche" e "la collina mi annoia".
    Perfetto.
    Il problema c'è quando metto sullo stage 3 istanze dello stesso pulsante e nomino le istanze p1,p2,p3.
    A quel punto appare , passando su ognuno dei tre pulsanti indifferentemente , la stessa scritta.
    Sembra che "ad avere la meglio" sia il pulsante con il numero più alto.
    Quindi se nello stage ci sono p1 , p2 e p3 per tutti e tre appare la scritta "la collina mi annoia".
    Se invece ci sono i pulsanti p1 ep2 appare la scritta"la montagna anche" per tutti e due.

    GRAZIE

  9. #9
    Mhmmm.. cambia tutto in


    codice:
    function associa(nome){
    	
    	this[nome].onRollOver=function(){ 
    		_level0.campo_di_testo=_level0.catalogo[substring(this._name,2,1)] 
    	} 
    
    	this[nome].onRollOut=function(){ 
    		_level0.campo_di_testo="" 
    	} 
    } 
    
    associa("p1") 
    associa("p2") 
    associa("p3")
    
    catalogo = new Array(3) 
    catalogo[1]="Il mare è bello" 
    catalogo[2]="La Montagna anche" 
    catalogo[3]="La collina mi annoia"

    adesso funziona l'ho provato.

    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    92
    Scusa se non ti ho rosposto prima...
    Funziona perfettamente , GRAZIE 1000.
    CIAO

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.