Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410

    imprecisione textHeight?

    Buongiorno a tutti!

    carico da un txt esterno una serie di paragrafi (sono delle faq).
    i paragrafi dentro il .txt sono suddivisi in variabili: faq_1, faq_2, etc.

    per ogni faq creo con un ciclo un campo di testo all'interno di una mc e lo dispongo sull'asse _y rispetto alla misura del campo precedente, in questo modo ho la posizione dei vari campi di testo per muovere da un elenco esterno la mc fino al testo desiderato. tipo "ancoraggio".

    recupero la misura del testo così:
    _root.misuraPrec = _root.text_mc["faq"+i].textHeight;

    Funziona, però se il paragrafo ha più di un certo numero di righe il posizionamento va in "pappa".
    Sembra come se prendesse la misura del testo prima di aver caricato tutte le righe... allora ho provato a prima a caricare tutti i testi e poi a disporli ma il problema persiste:

    if (i >= faqTot){
    for (i=1; i<=_root.faqTot; i++) {
    K = _root.spazio;
    _root.misuraPrec = _root.text_mc["faq"+i].textHeight;
    _root.spazio = _root.spazio+_root.misuraPrec+10;
    _root.text_mc["faq"+i]._y = K;
    }
    }

    facendo un trace delle misure dei testi si nota che anche i più lunghi non misurano oltre i 220 px


  2. #2
    ciao

    il textField ha l'autoSize = true vero?

    domanda banale ma da farsi..
    dai diamanti non nasce niente dal letame nascono i fior
    UNGAWA! Tiki Bar
    Villa Camerini

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    si certo,
    infatti non è che non mi mostra i testi, i testi vengono caricati correttamente, è solo la loro disposizione sull'asse y che non è corretta!
    Grazie comunque!

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    prova ad usare _height al posto di textHeight, in questo contesto non mi pare che abbia molto senso utilizzare textHeight, sopratutto se usi autoSize

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    Probabilmente hai ragione... ma il risultato non cambia


  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    questo è il codice... non sarà il massimo ma dovrebbe funzionare.
    Prima creo un elenco delle faq, poi carico i testi delle faq e poi provo ad assegnargli la _y


    caricaFaq = function () {
    testiFaq = new LoadVars();
    testiFaq.onLoad = function(success) {
    if (success) {
    var my_string:String = testiFaq.elenco;
    var my_array:Array;
    my_array = my_string.split(",");
    _root.faqTot = my_array.length;
    for (j=1; j<=_root.faqTot; j++) {
    _root.createEmptyMovieClip("faq_mc_"+j, 10+j);
    _root["faq_mc_"+j]._y = 20*j;
    _root["faq_mc_"+j].createTextField("btn", 1, 10, 10, 10, 1);
    var format:TextFormat = new TextFormat();
    format.bold = true;
    format.font = "Arial";
    format.size = 12;
    format.color = 0x333333;
    _root["faq_mc_"+j].btn.setNewTextFormat(format);
    _root["faq_mc_"+j].btn.autoSize = true;
    _root["faq_mc_"+j].btn.html = true;
    _root["faq_mc_"+j].btn.htmlText = my_array[j-1];
    _root["faq_mc_"+j].onPress = function() {
    mioNome = (String(this));
    numeroOggetto = mioNome.substr(mioNome.lastIndexOf("_")+1, 3);
    pos = _root.text_mc["faq"+numeroOggetto]._y;
    _root.text_mc._y = 0-pos;
    };
    }
    _root.createEmptyMovieClip("text_mc", 4);
    for (i=1; i<=_root.faqTot; i++) {
    //K = _root.spazio;
    _root["text_mc"].createTextField("faq"+i, i, 320, 10, 400, 1);
    var formattazione:TextFormat = new TextFormat();
    formattazione.font = "Arial";
    formattazione.size = 12;
    _root.text_mc["faq"+i].setNewTextFormat(formattazione);
    _root.text_mc["faq"+i].multiline = true;
    _root.text_mc["faq"+i].wordWrap = true;
    _root.text_mc["faq"+i].autoSize = true;
    _root.text_mc["faq"+i].html = true;
    _root.text_mc["faq"+i].htmlText = testiFaq["faq_"+i];
    if (i >= faqTot){
    for (i=1; i<=_root.faqTot; i++) {
    K = _root.spazio;
    _root.misuraPrec = _root.text_mc["faq"+i].textHeight;
    trace(misuraPrec);
    _root.spazio = _root.spazio+_root.misuraPrec+10;
    trace(spazio);
    _root.text_mc["faq"+i]._y = K;
    }
    }

    }
    }
    };
    testiFaq.load("faq.txt");
    };

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    allora, ricapitoliamo...

    wordWrap = true;
    multiline = true;
    autoSize = "left";

    questo sono quelli che comandano il ridimensionamento, poi

    _root.misuraPrec = _root.text_mc["faq"+i]._height;

    questo comanda la posizione precedente? ricorda che deve essere inserito dopo la riga in cui assegni il testo

    ho un dubbio... nel codice non vedo richiami al clip precedente, quello che dovrebbe dare lo spostamento per calcolare la posizione del clip correntemente processato, l'hia omesso di proposito, per stringare il codice?

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    vediamo...
    ho due variabili:
    misuraPrec
    spazio = 0

    Nel ciclo:
    K = _root.spazio;
    //con questa riga registro la dimensione del testo appena inserito
    _root.misuraPrec = _root.text_mc["faq"+i]._height;
    //con questa aumento il valore di spazio ad ogni passaggio in base al suo valore attuale + //la dimensione dell'ultimo testo + 10 di spazio
    _root.spazio = _root.spazio+_root.misuraPrec+10;
    //e con questa sposto il testo in base a spazio
    _root.text_mc["faq"+i]._y = K;

    in pratica forse sto riposizionando i testi in base alla misura di se stessi invece che di quello precedente? ...potrebbe essere data la genialità del sottoscritto!

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    >> in pratica forse sto riposizionando i testi in base alla misura di se stessi invece che di quello

    l'impressione in effetti è quella... la logica è corretta, ma non altrettanto la posizione delle righe di codice... ora non riesco a leggere il tuo codice, vedi un po' se, sulla base delle considerazioni fatte, riesci a trovare il problema

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    410
    in effetti è così, quanto mi odio!

    ecco il ciclo che riposiziona i testi con le righe nell'orine giusto:

    for (i=1; i<=_root.faqTot; i++) {
    K = _root.spazio;
    _root.text_mc["faq"+i]._y = K;
    _root.misuraPrec = _root.text_mc["faq"+i].textHeight;
    _root.spazio = _root.spazio+_root.misuraPrec+10;
    }

    Grazie Mille!!!


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.