Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-11-2004, 13:34   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Schöne Textformatierung - bitte Feedback

Hallo Leute,

ich bin dabei einen online Sprachkurs umzusetzen, mit allem pipapo (schreibt man das so ? ) Darunter auch eine Vokabelseite. Jetzt wollte ich natürlich, dass das zu übersetzende wort links und fett steht und die dazugehörige Übersetzung eingerückt, auch wenn es mehrzeilig sein sollte. Nun,ich hab lange gesucht und nichts gefunden. Also hab ich selbst was gebastelt.
Es würde mich freuen, wenn sich der eine oder andere von euch diese Sache mal ansieht und mir ev. Feedback gibt. Vor allem bin ich an Verbesserungen interessiert.

Also: Here we go!
PHP-Code:
//************************************************
//PROTOTYPES **************************************
//************************************************
Array.prototype.getCommonItems = function(compArr) {
    
//checkt die gemeinsamen Elemente, gibt sie zurück und löscht diese aus dem Original Array
    
var tmpArr = [];
    for (var 
0i<compArr.lengthi++) {
        if (
this[i] == compArr[i]) {
            
tmpArr.push(this[i]);
        } else {
            break;
        }
    }
    
this.splice(0tmpArr.length);
    return 
tmpArr;
};
ASSetPropFlags(Array.prototype"getCommonItems"10);
//
String.prototype.getTextLines = function(TFtWidth) {
    
//überprüft wieviele Zeichen im übergebenen Textformat(TF) in tWidth Platz haben und gibt es als Array zurück
    
var str;
    for (var 
0i<this.lengthi++) {
        
str += this.charAt(i);
        if (
TF.getTextExtent(str).width>tWidth) {
            break;
        }
    }
    return 
str.split(" ");
};
String.prototype.createLines = function(TFtWidth) {
    var 
originArr this.split(" ");
    var 
str this;
    var 
zeilen = [];
    
//diese Function holt sich die möglichen Zeilen (also die Zeichen die in einer Zeile platz haben) ->getTextLines()
    
var words str.getTextLines(TFtWidth);
    
//überprüft sie mit den Originalwörtern, falls Worte geteilt wurden
    
zeilen[0] = originArr.getCommonItems(words);
    while (
originArr.length>0) {
        
str originArr.join(" ");
        
words str.getTextLines(TFtWidth);
        
zeilen.push(originArr.getCommonItems(words));
    }
    
//und gibt sie im Array wieder zusammengesetzt zurück
    
return zeilen;
};
ASSetPropFlags(String.prototype"getTextLines,createLines"10);
//************************************************
TextField.prototype.writeText = function(txtArrTF) {
    
//tWidth gibt die Breite des eingerückten Textes an
    //wird berechnet aus der Breite dieses TextFields abzüglich des 1. tabStops und einer Sicherheit    
    
var tWidth this._width-(TF.tabStops[0]+15);
    
this.html true;
    for (var 
0i<txtArr.lengthi++) {
        
desc txtArr[i].trans.createLines(TF_1tWidth);
        
"<b>"+txtArr[i].word+"</b>\t"+desc[0].join(" ")+"<br>";
        for (var 
1j<desc.lengthj++) {
            
+= "\t"+desc[j].join(" ")+"<br>";
        }
        
this.htmlText += x+"<br>";
    }
    
this.setTextFormat(TF);
    
this.backgroundColor 0xB4CAD7;
    
this.drawScrollBar();
};
//************************************************
//************************************************
//

//Beispiel
TF_1 = new TextFormat();
TF_1.tabStops = [100];
TF_1.font "arial";
TF_1.size 12;

vokabel = [];
vokabel[0] = {word:"hallo"trans:"Na das funktioniert ja ganz toll. Man muss nur auf das Zusammenspiel von Wortlänge und TabsTops achten... "};
vokabel[1] = {word:"bello"trans:"bello heißt mein hund"};
vokabel[2] = {word:"chellobello"trans:"chello ist ein, Musikinstrument, chellobello ist ein schönes..."};
vokabel[3] = {word:"anders"trans:"1.(angabe) máskent, 2. valami adpüpasd pasdmo pas i adpüpasd pasdmo pas"};
vokabel[4] = {word:"bla bla bal"trans:"bla bal und so weiter und was weiß ich"};
//Textfeld wo das Ganze erscheinen soll
T_words.writeText(vokabelTF_1); 
Das Ganze braucht jetzt nur noch:
eine Textformat definition, anhand der die Zeichen/Zeile ermittelt werden können
die Textdaten
und Textfeld: T_words

lg und vielleicht kanns ja jemand brauchen!

TigerFox
__________________
-----------------------------------------
"Wissen ist Nacht" - Prof. Dr. Abdul Nachtigaller
TigerFox ist offline   Mit Zitat antworten
Alt 25-11-2004, 14:21   #2 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Hab noch was vergessen!

Damit das auch schön funktioniert bitte diese Function für getTextExtends() verwenden. (ich weiß leider den Autor nicht mehr sorry);

PHP-Code:
_global.TextFormat2 TextFormat;
TextFormat = function () {
    
super();
    
delete this.getTextExtent;
};
TextFormat.prototype = new TextFormat2();
TextFormat.prototype.getTextExtent2 TextFormat.prototype.getTextExtent;
TextFormat.prototype.getTextExtent = function(the_str) {
    
// create temporary textfield
    
_root.createTextField("getTextExtentTemp_txt"1000000111010);
    
// local reference to text field
    
var temp_txt _root["getTextExtentTemp_txt"];
    
// set the text format
    
temp_txt.setNewTextFormat(this);
    
// populate textfield with string
    
temp_txt.text the_str;
    
// get dimensions
    
var temp_txt.textWidth;
    var 
temp_txt.textHeight;
    
// wrap in object
    
var textExtent = {width:wheight:h};
    
// remove the textfield
    
temp_txt.removeTextField();
    
// return dimensions object
    
return textExtent;
};
ASSetPropFlags(_global"TextFormat,TextFormat2"131); 
__________________
-----------------------------------------
"Wissen ist Nacht" - Prof. Dr. Abdul Nachtigaller
TigerFox ist offline   Mit Zitat antworten
Alt 25-11-2004, 14:41   #3 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
kannst du den einsatz ein bischen erläutern?
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 25-11-2004, 16:13   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Also:
bei dem Dings geht es darum, dass man in einem dynamischen Textfeld automatisch zB. einen Begriff und dazu die Beschreibung ausgeben kann. Damit das nicht in einer Wurst geschrieben wird, kann man mit dem obigen Script nun die ganze Beschreibung einrücken, auch wenn diese mehrzeilig sein sollte.
siehe Anhang ->zb. in der Zeile: van er, sie, es is

Das praktische daran ist, dass sich das Ganze nun auch einfach scrollen läßt.



Vielleicht erklärt ein Bild doch mehr als 1000 Worte.... (siehe Anhang)


lg TF
Angehängte Grafiken
Dateityp: jpg textformat.jpg (34,3 KB, 36x aufgerufen)
__________________
-----------------------------------------
"Wissen ist Nacht" - Prof. Dr. Abdul Nachtigaller

Geändert von TigerFox (25-11-2004 um 16:21 Uhr)
TigerFox ist offline   Mit Zitat antworten
Alt 04-12-2004, 12:01   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Das läßt wohl jeden kalt?!
__________________
-----------------------------------------
"Wissen ist Nacht" - Prof. Dr. Abdul Nachtigaller
TigerFox ist offline   Mit Zitat antworten
Alt 05-12-2004, 08:28   #6 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
ist wahrscheinlich für die meisten, inkl. myself, zu hoch.............

pn's & mails checken, du schlawiner!
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti 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 04:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele