Flash-Projektor und Internetzugriff

Create

Mitglied
Hallo Community,
ich habe eine mutmaßlich einfache, aber im Moment - für mich - nicht zu lösende Frage.

Ich habe eine Projektordatei und möchte gerne eine, auf einem Server liegende Textdatei einlesen bzw. Daten holen in denen steht, dass ein Update vorliegt (für ein kleines Projektordateispiel).
Das Problem ist, dass ich wissen muß, ob und wann eine Internetverbindung besteht und dann auf eine externe Datei zugreifen und einlesen muß. Ich habe aber nicht so wirklich die Idee, wie ich beginnen soll. Ich habe jetzt gelesen, dass es die globale Variable _isOffline (?) gibt, aber irgendwie funktioniert dies nicht bei mir.
Tipps, Tricks und Anregungen wären nett...

Gruß und Danke
creAte
 
Hi,

das mit _isOffline hast du irgendwo aus dem Zusammenhang gerissen.
Du kannst dir aber selber eine Variable mit entsprechender Funktion basteln, indem du zum Beispiel über das LoadVars Objekt auf ein Script auf deinem Server zugreifst, und einen speziellen Rückgabewert erwartest. Kommt der nicht, bist du offline, kommt er, kannst du mit einer if Anweisung dein Programm starten ...

B
 
Hallo,
das hat mir erst einmal geholfen. Allerdings - sorry Flash-Neuling - geht der Code nicht?
Eine Idee oder ein Hinweis?

var url = "http://www.meinedomain.de/version.txt";
var target = new LoadVars();
var text = target.load(url);
if (target.load(url) == true) {
trace(text.version);
trace(text.inhalt);
} else {
trace("Nicht geladen");
}


Die Variablen der Textdatei version und inhalt sind beide undefined

Die Textdatei sieht so aus:

&version=1.0
&inhalt=hallo

Danke Euch!
 
Hi,

Code:
var url = "http://www.meinedomain.de/version.txt";
var target = new LoadVars();
var text = target.load(url);
if (target.load(url) == true) {
trace(text.version);
trace(text.inhalt);
} else {
trace("Nicht geladen");
}
Das ist - mit Verlaub - semantischer Unsinn. ;)

Probiers mal so:
PHP:
var the_url = "http://www.meinedomain.de/version.txt";
var target_lv = new LoadVars();
target_lv.onLoad = function(success) {
    if (success) {
        trace(this.version + ", " + this.inhalt);
    } else {
        trace("nicht geladen");
    }
}
target_lv.load(the_url);
Beachte ausserdem, dass "target", "url" und "text" teilweise reservierte Wörter sind, und nicht als Variablennamen verwendet werden sollten.

Zudem muss der Server das Laden von externen Domänen erlauben (Stichwort: Richtliniendatei).

Gruß
.
 
Hallo und Danke,
so funktioniert es.- aber warum semantischer Unsinn. Ich denke nur das "Target" ist ein wenig komisch gewählt, der Rest beschreibt ja was es ist - oder ? :p

Gruß
creAte
 
Hi,

1. LoadVars.load gibt nicht die geladenen Daten zurück (die werden direkt in das Objekt geschrieben), sondern bestenfalls "true" oder "false".

2. Du musst schon darauf warten, dass die Daten tatsächlich geladen werden - dazu gibt es den onLoad-Handler.

3. Zudem rufst Du load() zweimal hintereinander auf:
Code:
var text = target.load(url);
if (target.load(url) == true) {
Was soll das bringen?

Gruß
.
 
@B.: So? Das wäre mir allerdings neu, wenn ich via LoadVars etwas so einladen könnte:
PHP:
var bla = mein_loadvars.load("wasauchimmer");
trace(bla.variable1);
... Etwas anderes als "true" habe ich von load() nie zurückbekommen...

Flashreferenz hat gesagt.:
Diese Aktion ist asynchron.
.
 
Hallo,
OK OK überredet, richtig die Funktion gibt einen bool`schen Wert zurück.

Das Doppelte rührt noch von einem vorherigen Test, bringen sollte das in diesem Fall nichts, es ist ein Relikt des alten Codes (ich hätte es rausnehmen sollen, aber übersehen).

Gruß
 
Zurück