JavaScript aus Flash auslagern

SixxKiller

Erfahrenes Mitglied
Hi Leutz.

hab mal wieder ein kleines Prob. Ich hab ein JavaScript eingebaut in
eine fla. Es geht da um einen Countdown. Dieses Script möchte ich nun
gern auslagern um es besser nachträglich bearbeiten zu können.
Hatte schonmal hier gepostet aber finde die Beiträge nicht
mehr, sind auch nicht mehr in meinen Abos. Man hatte mir damals empfohlen
eine XML Datei zu erstellen.
Hier der Code der XML datei:
Code:
<?xml version="1.0" encoding="utf-8"?>
<startdatum>
	<jahr>2007</jahr>
	<monat>03</monat>
	<tag>18</tag>
	<stunde>19</stunde>
	<minute>30</minute>
	<sekunde>0</sekunde>
</startdatum>

Und hier das eigentliche JavaScript:
Code:
var jahr = 2007, monat = 08, tag = 16, stunde = 15, minute = 00, sekunde = 0;
// Ziel-Datum in MEZ
var zielDatum = new Date(jahr, monat-1, tag, stunde, minute, sekunde);


function countdown() {
	startDatum = new Date();
	// Aktuelles Datum
	// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
	if (startDatum <= zielDatum) {
		var jahre = 0, monate = 0, tage = 0, stunden = 0, minuten = 0, sekunden = 0;
		/* Allgemeines Vorgehen:
		             * Zunächst werden die vollen Jahre gezählt
		             * und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
		             * Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats berechnet
		             * und danach die tatsächlichen Monatstage wieder mit einbezogen.
		             * Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
		             * Die restliche Differenz zwischen Start- und Ziel-Zeit wird mit Tagen aufgefüllt und
		             * was dann noch übrig bleibt, in Stunden, Minuten und Sekunden ausgedrückt.*/
		// Jahre
		if (startDatum<zielDatum) {
			while (startDatum<zielDatum) {
				if (startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) {
					jahre++;
				}
			}
			startDatum.setFullYear(startDatum.getFullYear()-1);
		}
		// Restliche Tage zum Monatsende ermitteln 
		var restTage = 0;
		var m = startDatum.getMonth();
		if (m == 1-1 || m == 3-1 || m == 5-1 || m == 7-1 || m == 8-1 || m == 10-1 || m == 12-1) {
			restTage = 31-startDatum.getDate();
		} else if (m == 4-1 || m == 6-1 || m == 9-1 || m == 11-1) {
			restTage = 30-startDatum.getDate();
		} else if (m == 2-1) {
			if (startDatum.getFullYear()%4 == 0 && (startDatum.getFullYear()%100 != 0 || startDatum.getFullYear()%400 == 0)) {
				restTage = 29-startDatum.getDate();
			} else {
				restTage = 28-startDatum.getDate();
			}
			// Schaltjahr 
		}
		// Start- und Ziel-Tag merken und auf 1 setzen 
		var startTag = startDatum.getDate();
		var zielTag = zielDatum.getDate();
		startDatum.setDate(1);
		zielDatum.setDate(1);
		// Monate
		if (startDatum<zielDatum) {
			while (startDatum<zielDatum) {
				if (startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) {
					monate++;
				}
			}
			startDatum.setMonth(startDatum.getMonth()-1);
		}
		// Tatsächlichen Start- und Ziel-Tag berücksichtigen 
		if (startDatum.getMonth() == zielDatum.getMonth()) {
			if (startTag<=zielTag) {
				startDatum.setDate(startTag);
			} else {
				monate--;
				tage = restTage+1;
			}
		} else {
			startDatum.setMonth(startDatum.getMonth()+1);
			if (startTag>=zielTag) {
				tage = restTage+1;
			} else {
				monate++;
				startDatum.setDate(startTag);
			}
		}
		zielDatum.setDate(zielTag);
		// Tage
		restTage = Math.floor((zielDatum-startDatum)/(24*60*60*1000));
		startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
		tage += restTage;
		// Stunden
		stunden = Math.floor((zielDatum-startDatum)/(60*60*1000));
		startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);
		// Minuten
		minuten = Math.floor((zielDatum-startDatum)/(60*1000));
		startDatum.setTime(startDatum.getTime()+minuten*60*1000);
		// Sekunden
		sekunden = Math.floor((zielDatum-startDatum)/1000);
		// Anzeige formatiere
		(tage<10) ? tage="0"+tage+"t " : tage=tage+"t ";
		(stunden<10) ? stunden="0"+stunden+"h " : stunden=stunden+"h ";
		(minuten<10) ? minuten="0"+minuten+"m " : minuten=minuten+"m ";
		(sekunden<10) ? sekunden="0"+sekunden+"s" : sekunden=sekunden+"s";
		if (monate>0) {
			(monate<10) ? monate=monate+"M " : monate=monate+"M ";
			txt.text = monate+tage+stunden+minuten+sekunden;
		} else {
			txt.text = "In: "+tage+stunden+minuten+sekunden;
		}
		
	} else clearInterval(interval);
	// Anderenfalls alles auf Null setzen 
	// document.countdownform.countdowninput.value="0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
}
interval = setInterval(this, "countdown", 200);

Mir geht es jetzt um das was in der fla stehen muss damit die XML aufgerufen wird.
Es hat damals funktioniert aber ledier hab ich die Daten nicht mehr.
Danke schonmal für eure Hilfe.

Greetz SixxKiller
 
Hi,
geht es nun um JavaScript, oder um ActionScript?

JS wird in Flashdateien nicht ausgeführt, kann aber mit Hilfe der ExternalInterface-Klasse ausgelöst werden, wenn es im Quelltext der umgebenden html-Seite platziert ist.

Wenn ich davon ausgehe, dass es sich um ActionScript handelt, müsstest Du die XML-Datei laden und parsen, um aus den Daten ein Date-Objekt zu erstellen.

Mit dem Suchbegriff "XML" findest Du hier unzählige Threads, die sich mit dem Laden und Auslesen von XML-Daten mit Hilfe des XML-Objekts befassen.

Gruß
.
 
Ups da is mir nen Fehler unterlaufen. Natürlich ist es ein ActionScript.
Nun hab ich die Suche verwendet aber nicht wirklich was gefunden.
Im Prinzip müsste man ja die Datumsangabe rausnehmen und dafür die XML Datei
einlesen. Ich weiß auch noch das es nur eine kleine Veränderung war aber bei Flash
und ActionScripts bin ich noch ein Newbie.
 
Hi,

Gerne kann ich Dir einen Beispielcode posten - ich müsste allerdings wissen, welches Datum nun aus der XML-Datei gelesen werden soll: In der Datei heisst das Tag "startdatum", aber heruntergezählt werden soll ja scheinbar vom jetzigen Zeitpunkt bis zu einem festgelegten Enddatum.

Gruß
.
 
Es soll auf das datum herunter gezählt werden was in die XML Datei eingetragen wird.
Gut ich hatte jetzt das Datum nicht angepasst, hab einfach nur erstmal
den Quellcode gepostet von der XML Datei.
 

Neue Beiträge

Zurück