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.