PDA

Vollständige Version anzeigen : Laufschrift erklären


Warum
17.08.2003, 07:08
Hallo Forum,

habe ein Problem mit dem erklären des Codes einer Laufschrift.
Hat jemand die Zeit ein paar Zeilen zu schreiben, warum in dem folgenden Code die Laufschrift überhaupt funktioniert.
Vor allem, wo ist der unterschied zwischen den beiden fett markierten Zeilen.

var Text="Hallo und herzlich Willkommen";
var Geschwindigkeit = 0;
var Breite = 100;
var TextLaenge = Text.length;
var Position = 1 - Breite;
function StatusLauftext()
{
Position++;
var Textzustand ="";
if (Position == TextLaenge)
{
Position = 1 - Breite;
}
if (Position < 0)
{
for (var Zaehler = 1; Zaehler<=Math.abs(Position);Zaehler++)
{
Textzustand = Textzustand + " " ;
}
Textzustand = Textzustand + Text.substring(0,Breite-Zaehler + 1);
}
else
{
Textzustand = Textzustand + Text.substring(Position,Breite+Position);
}
window.status = Textzustand;
setTimeout("StatusLauftext()",Geschwindigkeit);
}


Vielen Dank im voraus
Warum

Warum
18.08.2003, 19:39
Hallo Forum,

mit fällt es auch nicht leicht die LS zu erklären. Deshalb habe ich hier im Forum den Beitrag erstellt um Unterstützung zu bekommen.
Wer kann mir ein paar Tipps geben ?

Vielen Dank
Warum

DJD
19.08.2003, 12:43
Gude Warum!
ich weiss ja nicht was du so genau erklärt haben willst, aber ich fang einfach ma an...
bin nicht perfect aber werde es versuchen...

gruss

dimi


var Text="Hallo und herzlich Willkommen";
Der text wird hier als string initialisiert...

var Geschwindigkeit = 0;
Diese variable wird dafür genutzt, um eine Zeit in ms angeben zu können, in welchen zeitlichen abständen die funktion StatusLauftext() aufgerufen wird... d.H. die schnelligkeit des LS wird hier definiert...

var Breite = 100;
Dies soll die Breite der Nachricht sein...in Zeichen (INT) ?!?!?

var TextLaenge = Text.length;
Hier wird in einer Variablen folgender Wert vergeben:
Die Anzahl der Zeichen der Variablen Text (INT)

var Position = 1 - Breite;
Hier wird die Position definiert 1 - 100


function StatusLauftext()
{
Position++;
Hier wird die Variable Positione eins hoch gezählt!

var Textzustand ="";
Hier wird die Variable Textzustand deklariert


if (Position == TextLaenge)
{
Position = 1 - Breite;
}
Wenn die Zahl der Variablen Position mit der Anzahl der Zeichen in dem Text String übereinstimmen, dann soll Position wieder zurückgesetzt werden (1-100 =-99), denn wenn die Anzahl der Zeichen in Nachricht übertroffen sind, dann soll der LS ja wieder vom neuen anfangen

if (Position < 0)
{
for (var Zaehler = 1; Zaehler<=Math.abs(Position);Zaehler++)
{
Textzustand = Textzustand + " " ;
}
Textzustand = Textzustand + Text.substring(0,Breite-Zaehler + 1);
}
Aber wenn Position kleiner als 0 ist (also -99) dann soll eine Schleife gestartet werden die folgendes bewirkt:
Mit Math.abs(Position); soll die -99 zu 99 umgewandelt werden.
Und so viele Spaces werden in der Variablen Textzustand geladen.Bis Zaehler größer ist als Position
(Math.abs() = Erwartet als Parameter eine Zahl. Liefert in jedem Fall den positiven Wert der Zahl zurück. War dieser vorher negativ, wird er positiv.)

(substring() = Extrahiert aus einer Zeichenkette eine Teilzeichenkette ab einer bestimmten Zeichenposition und bis zu einer bestimmten Zeichenposition. Gibt die extrahierte Zeichenkette zurück. Erwartet folgende Parameter:
1. Index Anfang = Position des ersten zu extrahierenden Zeichens in der Zeichenkette, wobei bei 0 zu zählen begonnen wird.
1. Index Ende = Position des ersten nicht mehr zu extrahierenden Zeichens in der Zeichenkette, wobei bei 0 zu zählen begonnen wird.)

andernfalls...

else
{
Textzustand = Textzustand + Text.substring(Position,Breite+Position);
}

Ist der Textzustand ein String mit dem eigentlichem Text...
Position ist der erste Buchstabe in dem String und Breite+Position ist das letzte Zeichen dann, dies ermöglicht es dann den Text zu brechen, damit es so aussieht, als ob er als Laufschrift nach links verschwindet

window.status = Textzustand;
Hier wird die Nachricht (Die Variable Textzustand) auf der Statusleiste gebracht, die ja bei jeden Aufruf anders aufgebaut ist

setTimeout("StatusLauftext()",Geschwindigkeit);
}
Führt die function StatusLauftext() nach einer bestimmten Verzögerungszeit aus. Code/Function und Pause in ms




Sodele..ich hoffe ich konnte dir weiterhelfen...

Gruss

Dimi

Warum
21.08.2003, 17:01
Hallo dimi,

danke für diese "Super Erklärung". Mein Problem war dieser Term
Textzustand = Textzustand + Text.substring(Position,Breite+Position);

Ich habe keinen richtigen Ansatz gehabt um diesen so erklären. Aber nun wird mir die Funktion langsam klar.

Tschau
HaPe