Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    39

    menu creato dinamicamente

    Ho realizzato un menu attraverso la duplicazione di un singolo movie clip sulla base del contenuto di un array.
    Il movieclip contiene un campo di testo dinamico che cambia contenuto per ogni copia duplicate con duplicateMvoieClip (leggendo i testi dall'array).
    Ora il problema è che alcuni testi sono corti (composti da una ola parola) altri sono più lunghi e, dovendo spostare le copie delclip originario a dx di x pixel(per creare il tipico menu orizzontale), a volte mi trovo a sovrappore le scritte.
    E' possibile sapere gli attributi di larghezza in pixel di un campo di testo dinamico.
    E ancora è possibile settare un campodi testo in mkodo che si ridimensioni in larghezza in modo da contenere perfettamente il testo che gli si associa?
    L'ultimo problema: vorrei inoltre che tale menu si creasse facendo inmodo che ogni voce apparisse leggermente più a sx della sua posizione definitiva e si muovesse velocemente a dx. Ciascuna voce del menu dovrebbe apparire quando quella alla sua sx si è fermata, ma avendo un solo movieclip duplicato non riesco a dare questo offset temporale ai movieclip (al massimo riesco a spostarli in contemporanea...).
    Per un esempio del movimento del menu http://www.vinoallaspina.it
    grazie a tutti.

  2. #2
    E' possibile sapere gli attributi di larghezza in pixel di un campo di testo dinamico?
    E ancora è possibile settare un campodi testo in mkodo che si ridimensioni in larghezza in modo da contenere perfettamente il testo che gli si associa?
    Puoi usare l'oggetto TextField, che ti permette di creare dinamicamente il tuo campo di testo. Ci sono moltissimi vantaggi, fra cui la cosa che serve a te: .autoSize, per far sì che il campo di testo sia largo abbastanza per contenere tutte le parole. Poi, per piazzare le altre voci del menu in posizione corretta, puoi ricavare la larghezza dei campi di testo precedenti con .textWidth.
    Giusto per farti capire quello che sto dicendo, ti posto un mini-esempio di codice che ho buttato giù ora, tu incollalo sul primo keyframe di un filmato vuoto. Questo non è un vero e proprio menu, non ci ho messo dei bottoni da cliccare, ho soltanto voluto buttare giù qualche riga per indirizzarti.
    codice:
    // inizializzazione variabili
    menu  = 0;
    depth = 0;
    
    // dichiarazione funzioni
    function crea_menu (fontid, fontsize, startx, starty, text_color, background_color)
    {
    	menu++;
    	_root["format_id"+menu]       = new TextFormat();
    	_root["format_id"+menu].color = text_color;
    	_root["format_id"+menu].font  = fontid;
    	_root["format_id"+menu].size  = fontsize;
    	_root["format_id"+menu].align = "center";
    	menu_str = menu.toString();
    	handler = "id";
    	handler = handler.concat(menu_str);
    	_root[handler+"x"] = startx;
    	_root[handler+"y"] = starty;
    	_root[handler+"b"] = background_color;	
    	return(handler);
    };
    function crea_voce (nome, menuid)
    {
    	depth++;
    	_root.createTextField("voce"+depth+"_"+menuid, depth, _root[menuid+"x"], _root[menuid+"y"], 1, 1);
    	_root["voce"+depth+"_"+menuid].text = " "+nome+" ";
    	_root["voce"+depth+"_"+menuid].setTextFormat(_root["format_"+menuid]);
    	_root["voce"+depth+"_"+menuid].background = true;
    	_root["voce"+depth+"_"+menuid].backgroundColor = _root[menuid+"b"];	
    	_root["voce"+depth+"_"+menuid].autoSize = "left";
    	_root["voce"+depth+"_"+menuid].selectable = false;
    	_root[menuid+"x"] += 4 + _root["voce"+depth+"_"+menuid].textWidth;
    };
    
    // creazione dinamica del menu
    m1 = crea_menu("_sans", 15, 0, 0, 0x002244, 0xffddbb);
    crea_voce("Bio", m1);
    crea_voce("Portfolio", m1);
    crea_voce("Servizi", m1);
    crea_voce("Contattami", m1);
    stop();
    Chiariamo: questo è solo uno schizzo eh, giusto per illustrarti come si usa l'oggetto TextField. Se vuoi utilizzare questo metodo per il tuo menu fammi sapere che vado più a fondo nel codice. Ora è abbastanza tardi e muoio dal sonno :bubu:

    Poi, dato che puoi inserire il TextField all'interno di un clip, puoi farci tutte le interpolazioni di movimento che vuoi, banalmente.


  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    39
    ok, il tuo esempio l'ho capito... solo che ormai il mio è completamente funzionante tranne che per il problema delle sovrapposizioni: ma non potrei usare l'attributo .auotSize anche se il campo di testo dinamico lo creo "a mano" e non dinamicamente con .createTextField()?
    In effetti dovrei potere essendo un attributo come .text o .htmlText, no?

  4. #4
    Certamente! Prova con nome_campo_di_testo.autoSize = "left"

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    39
    ok, e questo l'ho risolto!Grazie!
    Ora l'ultimo problema...
    come faccio a far comparire la "manina" del collegamento ipertestuale sul campo di testo?!?
    Essendo ciascun mio campo di testo contenuto in un movieClip ho provato con:
    my_mc.useHandCursor = true;
    ma non succede nulla!
    Prima avevocreato un pulsante vuoto con nessuna azione associata da mettere sotto il campo di testo in modo che apparisse la manina, ma è una soluzione poco elegante...
    ...ci dev'essere un modo per rendere un mc un pulsante(ah, ho delle azioni associate al clipEvent per cui non posso trattarlo come un'istanza di pulsante...).
    Ti ringrazio!

  6. #6
    Non potresti creare un bottone all'interno di un mc? Così potresti assegnare le azioni che devi al mc e al bottone separatamente.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    39
    si il problema è chenon riesco a ridimensionarlo in modo che sia esattamente grande come il campo di testo a cui è associato, per cui a volte, se due voci sono vicine, ci sono problemi di link.
    Se fosse stato possibile dire al campo di testo di far apparire la manina automaticamente al rollover sarebbe stato meglio...

  8. #8
    Ma, avendo un mc che contiene sia il bottone che il campo di testo, hai provato a fare:

    nome_mc.nome_campo_di_testo.autoSize = "left";
    nome_mc.nome_bottone._width = nome_mc.nome_campo_di_testo._width
    nome_mc._width = nome_mc.nome_campo_di_testo._width;


    ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    39
    ok, ce l'ho fatta!!!
    se vuoi vedere è su http://www.vinoallaspina.it
    Grazie mille!!

  10. #10
    Veramente molto carino il sito!
    L'intro è davvero simpatica e ben fatta, e la scelta cromatica delle pagina è molto azzeccata. Riguarda le pagine in inglese e tedesco: ci sono degli errori nel menù (o forse devi semplicemente finire di metterlo a posto, come hai scritto sopra le bandierine ).
    Felice d'esser stato d'aiuto.


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.