Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-07-2004, 22:22   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 56
Post textField: kopieren mit Format. Geschwindigkeit?

Tach zusammen,

Ich habe ein textField, in dem ich Text per Contextmenu formatieren kann. Außerdem kann ich aus einer Datenbank Bilder in den Text einfügen. Diese werden dort als Tag eingefügt, etwa so: ?#r|00001#?.

Zur besseren Lesbarkeit markiere ich diese Tags auch noch farbig. Wenn man sie anklickt, wird eine Vorschau des Bildes angezeigt. Später werden die Tags dann mit PHP identifiziert und eine HTML-Seite generiert, in der das Bild an der richtigen Stelle mittels einer Tabelle eingefügt wird.

So, mein Problem ist nun, dass es sich ziemlich schwierig gestaltet, die Formatierungen im Text beizubehalten, wenn ich einen neuen Tag einsetze.

Mein Ansatz war, dass ich erst den Inhalt des Textfields bis zu Selection.getBeginIndex() in einen Buffer kopiere, inklusive der Formatierung. Sowie die Inhalte, die danach kommen, in einen weiteren Buffer.

Dann generiere ich den Tag, und setze das ganze zusammen, indem ich inputField = buffer1 + tag + buffer2 setze. Danach muss ich allerdings die Formatierungen aus dem Buffer wieder kopieren, da sie beim Zusammensetzen immer verloren geht.

Das funktioniert auch prima, wenn allerdings der Text einigemaßen lang wird (so lang wie bis hierher z.B.), dann braucht mein Rechner (800 MHz) allein für das aus dem Buffer kopieren und formatieren > 6 Sekunden.

Ziemlich unbefriedigend. Hat jd. noch eine Idee?

lg

jt

Nachtrag:

Ich lese das Format am Anfang in ein Array und nachher wiede aus dem Array, das geht schon mal doppelt so schnell, wie wenn man es jedes mal mit getTextFormat ausliest. Aber setTextFormat scheint gewaltig zu bremsen...

Hier auch noch ein bißchen Code:

PHP-Code:
  function insertImage(alignid) {
    
trace("Start Insert: "+getTimer());
    
    
//add image pos
    
insertPosition selStart 1;

    
lisa imgPOS.push({fileidposinsertPositionalignalign});
    
    
imgPOS.sortOn("pos");
    
    
//create tag
    
tag "?#";
    
tag+= align "|";
    
tag+= "00000".substr(0id.length);
    
tag+= id;
    
tag+= "#?"
    
    
//advance all following image positions by tag length (11)
    
for(i=0;i<imgPOS.length;i++) {
        if(
imgPOS[i].pos insertPositionimgPOS[i].pos += 11;
    }
    
    
trace("Copy to buffer start: "+getTimer());
    
    
inputFieldArray = new Array();
    
    
//format buffer text
    
for(i=0;i<inputField.text.length;i++) {
            
inputFieldArray[i] = inputField.getTextFormat(i)
    }
    
    
trace("Copy to buffer end: "+getTimer());
    
    
trace("Copy from buffer start: "+getTimer());
    
    
inputField.text inputField.text.substr(0selStart) + tag inputField.text.substr(selStart);
    
    
selStart;
    
selStart 11;
    
inputField.text.length;
    for(
i=0;i<n;i++) {
        
inputField.setTextFormat(iinputFieldArray[i]);
    }
    for(
i=n;i<o;i++) {
        
inputField.setTextFormat(ibuffer2Array[i-n]);
    }
    for(
i=o;i<p;i++) {
        
inputField.setTextFormat(iinputFieldArray[i-11]);
    }
    
trace("Copy from buffer end: "+getTimer());
    
    
//hide slider
    
cancelImage();



PS: Wer replaceSel kennt, ist klar im Vorteil Hat sich erledigt.

Geändert von josephtura (21-07-2004 um 23:26 Uhr)
josephtura ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele