Avatar billede dvl Nybegynder
23. august 2004 - 15:37 Der er 10 kommentarer og
1 løsning

Import af én tekstfil i FLERE felter

Det er lykkedes mig at importere .txt filer fra en given tekstfil........MEN...

...kan man evt. lave flere dynamiske tekstfelter som "hænger" sammen, så man opnår et layout magen til en artikel i en avis?

Dvs. i tilfælde af at al teksten ikke kan være i ét tekstfelt i en given størrelse så vil teksten blot fortsætte i det næste tekstfelt.

Jeg vil forsøge at undgå scroll.
Avatar billede pyroman Nybegynder
23. august 2004 - 22:06 #1
Hmm - tjaa flash har ikke rigtigt noget der lige kan klare denne opgave på en nem og simpel måde... men her er mit bud på det:



var langTekst = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut eleifend est eu nulla. Nunc pulvinar, nulla nec vulputate mattis, lorem est aliquet enim, sit amet fringilla mauris libero quis dolor. Proin volutpat magna. Praesent sem eros, lacinia at, aliquam sed, lobortis quis, risus. Praesent quam. Sed eu arcu. Nulla iaculis porta est. Morbi laoreet. In id enim. Nulla suscipit, nibh in hendrerit vehicula, orci nisl mollis metus, non ornare justo pede id ligula. Vivamus vitae enim ut ipsum pharetra vehicula. Maecenas scelerisque diam. Aliquam ultricies sem sed pede. Vestibulum molestie. Proin interdum. Fusce volutpat augue sed enim. Aliquam erat volutpat. Curabitur magna sem, volutpat eu, pellentesque non, vestibulum quis, diam.";

function createNextTextField(name, depth, text, x, y, w, h){
    this.createTextField(name, depth, x, y, w, h);
    var tf = this[name];
    tf._x = x;
    tf._y = y;
    tf._width = w;
    tf._height = h;
    tf.border = true;
    tf.multiline = true;
    tf.wordWrap = true;
    tf.text = text;
}
function setupTextFields (text, textFormat, x, y, w, h){
    var wordArr = text.split(" ");
    var end = 0;
    var txts = 0;
    var ntext;
    var ctext;
    var obj;
    for(var i=0;i<wordArr.length-1;i++){
        ntext = wordArr.slice(end, i+1).join(" ");
        obj = textFormat.getTextExtent(ntext, w);
        if(obj.textFieldHeight > h){
            ctext = wordArr.slice(end, i).join(" ");
            txts++;
            createNextTextField("txt"+txts, txts, ctext, x+(w+5)*(txts-1), y, w, h);
            end = i;
        }
    }
    txts++;
    ctext = wordArr.slice(end, wordArr.length).join(" ");
    createNextTextField("txt"+txts, txts, ctext, x+(w+5)*(txts-1), y, w, h);
   
}
mtf = new TextFormat();
var tid1 = getTimer();

setupTextFields(langTekst, mtf, 0, 0, 100, 200);

trace("tid= "+(getTimer()-tid1));



Kan forklare koden lidt nærmere - hvordan man lige ændrer den og bruger den...
Men prøv den og se om det er noget der kan bruges...
Avatar billede dvl Nybegynder
24. august 2004 - 08:31 #2
Jeg kigger lige på det. På forhånd tak. =)
Avatar billede dvl Nybegynder
24. august 2004 - 08:52 #3
Den generer fint det første tekstfelt men laver derefter ikke flere.

Er det hos mig at fejlen ligger?
Avatar billede pyroman Nybegynder
24. august 2004 - 18:58 #4
Ja - du må bruge flash 6 ik?
Avatar billede pyroman Nybegynder
24. august 2004 - 19:07 #5
Den her burde klare det - også i flash 6:


var langTekst = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut eleifend est eu nulla. Nunc pulvinar, nulla nec vulputate mattis, lorem est aliquet enim, sit amet fringilla mauris libero quis dolor. Proin volutpat magna. Praesent sem eros, lacinia at, aliquam sed, lobortis quis, risus. Praesent quam. Sed eu arcu. Nulla iaculis porta est. Morbi laoreet. In id enim. Nulla suscipit, nibh in hendrerit vehicula, orci nisl mollis metus, non ornare justo pede id ligula. Vivamus vitae enim ut ipsum pharetra vehicula. Maecenas scelerisque diam. Aliquam ultricies sem sed pede. Vestibulum molestie. Proin interdum. Fusce volutpat augue sed enim. Aliquam erat volutpat. Curabitur magna sem, volutpat eu, pellentesque non, vestibulum quis, diam.";

function createNextTextField(name, depth, text, x, y, w, h){
    this.createTextField(name, depth, x, y, w, h);
    var tf = this[name];
    tf.border = true;
    tf.multiline = true;
    tf.wordWrap = true;
    tf.text = text;
}
function setupTextFields (text, textFormat, x, y, w, h){
    var wordArr = text.split(" ");
    var end = 0;
    var txts = 0;
    var ntext;
    var ctext;
    var obj;
   
    var tmpmc = this.createEmptyMovieClip("_tmpMC", 9999);
    tmpmc._visible = false;
    tmpmc.createTextField("txt", 1, 0, 0, w, h);
    tmpmc.txt.multiline = true;
    tmpmc.txt.wordWrap = true;
    tmpmc.txt.setNewTextFormat(textFormat);
   
    for(var i=0;i<wordArr.length-1;i++){
        ntext = wordArr.slice(end, i+1).join(" ");
        tmpmc.txt.text = ntext;
        if(tmpmc.txt.maxscroll > 1){
            ctext = wordArr.slice(end, i).join(" ");
            txts++;
            createNextTextField("txt"+txts, txts, ctext, x+(w+5)*(txts-1), y, w, h);
            end = i;
        }
    }
    tmpmc.removeMovieClip();
   
    txts++;
    ctext = wordArr.slice(end, wordArr.length).join(" ");
    createNextTextField("txt"+txts, txts, ctext, x+(w+5)*(txts-1), y, w, h);
 
}
mtf = new TextFormat();
var tid1 = getTimer();

setupTextFields(langTekst, mtf, 0, 0, 100, 200);

trace("tid= "+(getTimer()-tid1));
Avatar billede dvl Nybegynder
25. august 2004 - 09:41 #6
FEDT! DET VIRKER! Hvid du var ved siden af mig ville jeg give dig en frugtkurv og en gratis cykelkasket!

Nu skal jeg blot få den til at hente teksten eksternt!
Avatar billede dvl Nybegynder
25. august 2004 - 09:42 #7
Hvordan giver jeg point?
Avatar billede dvl Nybegynder
25. august 2004 - 10:06 #8
Hvordan ændrer jeg skrifttype, farve osv.?
Avatar billede pyroman Nybegynder
25. august 2004 - 15:42 #9
Der skal du bruge flash's textFormat object... det har jeg allerede forberedt koden på - se på de nederste linier:

mtf = new TextFormat();

det er textformatet, så kan du ændre alt mellem himmel og jord, fx:

mtf.bold = true;
mtf.font = "Verdana";
Avatar billede pyroman Nybegynder
25. august 2004 - 15:42 #10
Og så smider jeg et svar... så kan du nemlig give point ;)
Avatar billede dvl Nybegynder
26. august 2004 - 09:33 #11
Kewl. =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester