Avatar billede vizone Nybegynder
08. juli 2008 - 22:37

Skift af fontstørrelse i dynamisk tekst

Hej, jeg har lavet et tekstfelt hvor man selv kan skrive tekst og gemme det. Jeg er nået så langt at jeg kan gemme det, og den del fungere ok, men jeg vil jo også gerne kunne formatere tekten, med Bold, italic etc. alt dette virker også, så det sidste jeg mangler er at kunne ændre skriftstørrelsen, jeg synes jeg har prøvet alt uden held, jeg håber der er nogen der kan hjælpe...

Min kode så således ud:

import util.Proxy;

var focusFixer:Object = new Object();
var selectionStart:Number;
var selectionEnd:Number;
var viewMode:String = "text";
var isTextView:Boolean = true;
var textFormat:TextFormat = new TextFormat("verdana", 11, 0x444444);
var txt:String = "Det jeg søger er egentlig bare en måde at lave en knap, der indsætter noget code på hver sin side af den markede tekst.";


function doCommand(command:String, param):Void
{
    if (selectionStart != selectionEnd) {
        textFormat = plain_txt.getTextFormat(selectionStart, selectionEnd);
        switch (command) {
            case "bold" :
                textFormat.bold = !textFormat.bold;
                break;
            case "italic" :
                textFormat.italic = !textFormat.italic;
                break;
            case "underline" :
                textFormat.underline = !textFormat.underline;
                break;
            case "justify" :
                if (arguments.length<2) {
                    throw new Error("Requires two arguments");
                }
                textFormat.align = param;
                break;
            case "indent" :
                if (arguments.length<2) {
                    throw new Error("Requires two arguments");
                }
                textFormat.indent += param;
                break;
            case "bullets" :
                textFormat.bullet = !textFormat.bullet;
                break;
        }
        plain_txt.setTextFormat(selectionStart,selectionEnd,textFormat);
    }
}

//skrift mellem text og html view
function switchViewMode():Void
{
    isTextView = !isTextView;
    if (isTextView) {
        if (html_txt.text != plain_txt.htmlText) {
            plain_txt.htmlText = html_txt.htmlText;
        }
        html_txt.text = "";
        plain_txt._visible = false;

    }
    else {
        html_txt.text = plain_txt.htmlText;
        html_txt._visible = true;
    }
    plain_txt._visible = isTextView;
    html_txt._visible = !isTextView;

}

// focusFixer bliver brugt til at erstatte brugerens selction, når brugeren klikker uden for tekstfeltet
function setFocusHandler():Void
{
    //hvis tekstfeltet har fokus
    if (Selection.getFocus() == targetPath(this)+".plain_txt") {
        // Gem brugerens selection
        this.onEnterFrame = function()
        {
            selectionStart = Selection.getBeginIndex();
            selectionEnd = Selection.getEndIndex();
        };
    }
    else {
        //hvis tekstfeltet ikke har fokus, men brugeren lavede en selection, opretter vi den igen her
        if (selectionStart != selectionEnd) {
            Selection.setSelection(selectionStart,selectionEnd);
        }
        delete this.onEnterFrame;
    }
}

bold_mc.onRelease = Proxy.create(this, doCommand, "bold");
italic_mc.onRelease = Proxy.create(this, doCommand, "italic");
underline_mc.onRelease = Proxy.create(this, doCommand, "underline");
left_mc.onRelease = Proxy.create(this, doCommand, "justify", "left");
center_mc.onRelease = Proxy.create(this, doCommand, "justify", "center");
right_mc.onRelease = Proxy.create(this, doCommand, "justify", "right");
outdent_mc.onRelease = Proxy.create(this, doCommand, "indent", -20);
indent_mc.onRelease = Proxy.create(this, doCommand, "indent", 20);
bullets_mc.onRelease = Proxy.create(this, doCommand, "bullets");
html_mc.onRelease = Proxy.create(this, switchViewMode);

focusFixer.onSetFocus = Proxy.create(this, setFocusHandler);
Selection.addListener(focusFixer);
plain_txt.text = txt;
html_txt.text = plain_txt.text;
plain_txt.setTextFormat(textFormat);
html_txt._visible = false;
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