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

    La lunghezza del campo testo dinamico

    Cerco di spiegarmi...semplificando il tutto.

    Apro un nuovo documento di flash e metto sullo stage due caselle di testo dinamico a cui assegno le variabili rispettivamente riga_1 e riga_2 .

    Le due caselle sono di dimensioni uguali 18 X 200 (solo perche' quando le creo devo per forza dar loro una dimensione quindi ho scelto queste senza un particolare motivo) e le posiziono con il medesimo valore _y per farle apparire su un'unica riga, e con un valore dell' asse _x che le distanzia leggermente.

    A questo punto carico i valori delle due variabili da un file .xml esterno e per farmi capire le imposto cosi':

    riga_1 = "Colore di sottofondo:" e riga_2 ="Giallo."

    in modo da ottenere la scritta
    Colore di sottofondo: Giallo.

    Questo per fare una panoramica della situazione.

    Il problema si presenta perche' devo costruire un sito dinamico in piu' lingue e quindi a seconda della lingua selezionata cambia il file .xml da dove vengono prelevate le variabili.
    Questo comporta ad esempio che in inglese la frase venga cosi':
    codice:
    Background color:     Yellow.     
    Colore di sottofondo: Giallo.
    E' evidente la diff. di lunghezza.
    E cambiando altre lingue la prima frase aumenta o diminuisce di lunghezza con il risultato che la seconda risulta piu' o meno lontana dalla prima.

    Impostando la prima casella di dimensioni esagerate (anche 500 o piu') risolvo il problema di non sapere quanto sara' lunga la prima frase a priori, ma la cosa si complica perche' devo calcolarne la lunghezza per poter posizionare la seconda frase subito dopo.

    Come posso calcolare la lunghezza del campo testo in modo dinamico dopo averlo riempito con la variabile, visto che interrogando il valore _width mi restituisce sempre la lunghezza del campo totale che gli ho attribuito io in fase di creazione (200 px)?

    Grazie mille per qualsiasi consiglio.

  2. #2
    Ho trovato questa soluzione, ma forse ce ne sono altre di più comode.

    funzione:
    function riposiziona(rig1, rig2) {
    riga_1.text = rig1;
    riga_2.text = rig2;
    spazio = Number(riga_1.text.length)*5.2;
    riga_2._x = riga_1._x+spazio;
    }

    sui pulsante (ITA):
    on (release) {
    riposiziona("Colore di sottofondo:", "Giallo.");
    }

    sui pulsante (ENG):
    on (release) {
    riposiziona("Background color:", "Yellow.");
    }

  3. #3
    Immaginavo una possibile soluzione di questo tipo, anche se stilisticamente poco corretta.
    Grazie mille.
    Quel valore 5,2 come lo hai ottenuto se non conoscia a priori il tipo di font che utilizzo?
    Lo hai calcolato empiricamente, facendo delle prove con un font a tua scelta?

    Grazie 1000 x la risposta.


    Altre idee?

  4. #4
    Il 5.2 è venuto dopo varie prove, utilizzando un arial 10.
    Ma infatti la mia soluzione è molto "manuale" e poco dinammica.

  5. #5
    Utente di HTML.it L'avatar di NAP
    Registrato dal
    Jan 2001
    Messaggi
    4,398
    Se mi spieghi il perché usi 2 caselle distinte, forse riesco a capire la natura del prob. Voglio dire: se i file xml sono due, differenti, che bisogno c'è di usare due campi? Se ne usassi solo uno il prob non sussisterebbe perché il nuovo caricamento spopola la variabile e si ripopola con quella nuova.
    Ma cmq la cosa non mi intriga e ti consiglio semplicemente di settare ad entrambi i campi l'allineamento a sx, e così qualunque sia il testo caricato si posizionerà sempre a partire dallo stesso punto. Non dimenticare che per i campi puoi usare anche le modalità di spazio (in pixel), per distanziare il testo dai bordi sx, dx, sopra, sotto e rientro.

    Tuttavia ho la forte sensazione di non aver capito quasi niente

    NAP
    A volte la diplomazia va condita con un pizzico di siluri fotonici. (K. Janeway)

  6. #6
    Originariamente inviato da NAP
    Se mi spieghi il perché usi 2 caselle distinte, forse riesco a capire la natura del prob. Voglio dire: se i file xml sono due, differenti, che bisogno c'è di usare due campi? Se ne usassi solo uno il prob non sussisterebbe perché il nuovo caricamento spopola la variabile e si ripopola con quella nuova.
    Ma cmq la cosa non mi intriga e ti consiglio semplicemente di settare ad entrambi i campi l'allineamento a sx, e così qualunque sia il testo caricato si posizionerà sempre a partire dallo stesso punto. Non dimenticare che per i campi puoi usare anche le modalità di spazio (in pixel), per distanziare il testo dai bordi sx, dx, sopra, sotto e rientro.

    Tuttavia ho la forte sensazione di non aver capito quasi niente

    NAP
    Forse non hai capito davvero.

    I campi di testo sono uno dopo l'altro, in orizzontale.
    Quindi il secondo deve posizionarsi non poco dopo il primo ma poco dopo l'ultima lettera del testo del primo, da lì ho fatto il mio codice che relativamente in maniera poco dinamica risolve il problema.

    Comunque quoto anch'io il dubbio di dover per forza fare due campi, quando sarebbe più comodo farne uno e sommare, semplicemtne, le variabili.

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.