Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-05-2008, 09:00   #1 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Warten bis Variable aus PHP geladen ist.

Folgende Aufgabenstellung, die ich irgendwie nicht gelöst bekomme.

Ich habe Testweise eine ganz einfach PHP Seite erstellt.

Inhalt:

PHP-Code:
<?php 
echo '&BaWue=1&'
?>
Bisher lade ich diese "Variable" über diesen Befehl:
Code:
loadVariablesNum("db.php", 0);
Was zur Folge hat, dass man nach einem Klick auf Weiter ein Dynamisches Textfeld sieht (BaWue) wo der Wert 1 drin steht. Soweit so gut.

Jetzt würde ich gerne ohne "Button" arbeiten.

Beim starten der .swf sollen also die "Variablen" aus der Datei gelesen werden und wenn diese vollständig geladen sind, soll es mit dem nächsten Frame weiter gehen.

Das ganze soll nachher etwas komplexer werden, also im Klartext will ich nachher über eine SQL Datenbank die "Werte" auslesen. Deswegen ist es nötig, dass eine .php Datei geladen wird und keine .txt Datei.

Außerdem arbeite ich zusätzlich mit "meineSchaltflaeche._visible = true;"
und false. Dass heißt wiederum, dass ich auch noch einen "Code" brauche, der in der Lage ist, die erfolgreich eingelesenen "Variablen". Zu verarbeiten.

Im aktuellen Beispiel würde das bedeuten, dass ich nachher auch noch eine If Abfrage brauche zum Beispiel:

Code:
if (BaWue=1) { 
meineSchaltflaeche._visible = true; 
} else {
meineSchaltflaeche._visible = false;
Ich hoffe es war einigermaßen verständlich und dass mir jemand helfen kann.

Wie der Präfix schon verrät benutze ich noch das gute "alte" Flash MX Version 6.

Sollte es allerdings nicht möglich sein es damit zu lösen, würde ich mir auch notgedrungen Flash CS3 erneut installieren. (CS3 war mir auf Dauer zu "unübersichtlich", da ich lange Zeit an die Oberfläche von MX gewöhnt war. Ausrichten geht dort zum Beispiel finde ich viel leichter als in CS3).

Geändert von KnightOrk (27-05-2008 um 09:14 Uhr)
KnightOrk ist offline   Mit Zitat antworten
Alt 27-05-2008, 09:27   #2 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Dafür gibts die LoadVars-Klasse (die gibt es ab dem Flashplayer 6, die müsste also auch schon in MX dabei sein).

Die hat für solche fälle den onLoad-Handler mit dem man das Laden der Variablen abwarten kann.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 27-05-2008, 09:47   #3 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Ja hab ich auch gedacht. Es gibt auch die "Funktion" LoadVars, allerdings scheint die nicht zu funktionieren, oder ich hab nur noch nicht raus gefunden, wie sie funktionieren soll.

Denn auch loadVariables hat irgendwie nicht so funktioniert wie ich es wollte. Zumindest nicht in meinem Test...

Ich hatte mich an die "Anleitung" von Flash gehalten...

Url: http://livedocs.adobe.com/flashlite/...=00000560.html

Zitat:
Durch den folgenden Code wird eine onLoad-Prozedurfunktion definiert. Diese gibt an, wenn von einem serverseitigen PHP-Skript Daten an die Flash-Anwendung zurückgegeben werden, und lädt die Daten in passvars.php.

var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
trace(this.toString());
} else {
trace("Error loading/parsing LoadVars.");
}
};
my_lv.load("http://www.helpexamples.com/flash/params.txt");

Erstens taucht die "versprochene" passvars.php gar nicht in dem Code auf *lol* und wenn ich diesen Code umschreibe auf meine .php Datei wird ist IMMER und Jederzeit "success=true" was dazu führt, dass das Script auch nicht wirklich wartet, bis die Variablen geladen worden sind.

Mein Code dazu sieht so aus:

Zitat:
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}
};
my_lv.load("db.php");
Wenn ich das ganze richtig verstanden habe, müsste doch jetzt die "Variable" my_lv den Wert: BaWue=1 haben. (Hoffe ich zumindest)
KnightOrk ist offline   Mit Zitat antworten
Alt 27-05-2008, 09:57   #4 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
testest du das ganze online oder auf einem lokalen Webserver?
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 27-05-2008, 10:12   #5 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Das ganze wird online getestet, da ich viel zu "faul" bin einen lokalen Webserver einzurichten um sowas zu testen.

Es ändert sich auch nichts daran, wenn ich die vollständige Adresse zur db.php angebe. Daran liegt es also auch nicht.

Wie gesagt es scheint so als würde der Befehl einfach ignoriert.

Auch: loadVariables("db.php"); funktioniert nicht. Bzw der Wert wird nicht in das Feld geschrieben. Mit loadVariablesNum klappt es aber.

SWF mit LoadVarsNum

Selbe SWF mit LoadVars

(Kurze Erklärung: der rote Button ist der "weiter" Button, der grüne ist abhängig von dem ausgelesenen Wert des Textfeldes im ersten Frame. Heißt wenn also wenn 1, dann sichtbar, wenn 0, dann unsichtbar. Klappt allerdings nur, wenn man die Zahl im ersten Frame ändert, weil natürlich im ersten Frame wieder der Wert von der .php Datei geholt wird).

Geändert von KnightOrk (27-05-2008 um 10:23 Uhr)
KnightOrk ist offline   Mit Zitat antworten
Alt 27-05-2008, 10:22   #6 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Versuch mal das:

PHP-Code:
var lv:LoadVars = new LoadVars();

lv.onLoad = function(success:Boolean):Void {
  if(
success) {
    
irgendeinTextfeld.text this.BaWue;
  } else {
    
irgendeinTextfeld.text "Laden fehlgeschlagen";
  }
}
lv.load("db.php"); 
Bzw.: Du hast aber schonmal die php direkt im Browser aufgerufen, oder? ... Nicht das die schon nicht funktioniert?
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 27-05-2008, 10:40   #7 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Sicher, sonst würde er ja auch nicht bei der LoadVarsNum funktionieren.

Inhalt der PHP Datei hab ich ja oben zitiert. Im Browser sieht das ganze dann so aus:

http://www.knightork.de/db.php

Um zu deinem Lösungsansatz zu kommen. Siehe Ergebniss hier:

http://www.knightork.de/db_3_rm.swf

So und nun zu den "Fehlern" Erstens habe ich dick und Fett ein Stop Unterhalb deines Befehles, den Flash einfach ignoriert, was mich zu der Annahme führt, dass er auch das ganze ActionScript gar nicht vernünftig abarbeitet. Das Textfeld bleibt in diesem Fall auch komplett leer, obwohl ich deinen Befehl an mein Textfeld angepasst habe:

Code:
var lv:LoadVars = new LoadVars(); 

lv.onLoad = function(success:Boolean):Void { 
  if(success) { 
    textfeld1.text = this.BaWue; 
  } else { 
    textfeld1.text = "Laden fehlgeschlagen"; 
  } 
} 
lv.load("db.php"); 

stop();
Der Instanzname von meinem Dynamischen Textfeld ist: textfeld1 (Schreibweise überprüft und sogar durch die Zielsuche von Flash MX bestätigt).

Um zu "zeigen" das der Befehl gar nicht richtig arbeiten kann, habe ich noch einmal etwas geändert.

Code:
var lv:LoadVars = new LoadVars(); 

lv.onLoad = function(success:Boolean) { 
  if(success) { 
    textfeld1.text = "Daten geladen"; 
  } else { 
    textfeld1.text = "Laden fehlgeschlagen"; 
  } 
} 
lv.load("db.php");
Siehe_ http://www.knightork.de/db_3.swf

Das Dynamische Textfeld: "textfeld1" bleibt aber leer. Dein Zusatz:
Code:
:Void
musste ich raus nehmen, da es ständig einen Fehler produziert.

Geändert von KnightOrk (27-05-2008 um 10:56 Uhr)
KnightOrk ist offline   Mit Zitat antworten
Alt 27-05-2008, 11:06   #8 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Aso, stimmt, das Void ist AS2 ... schieb mal die .fla hier hoch.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 27-05-2008, 11:13   #9 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Welche von den mitlerweile 5 Versuchen?

Ich hab jetzt einfach mal alle 5 .fla inklusive .swf inklusive .php Datei in die .zip gepackt.

Sie sind absichtlich "einfach" gehalten, weil ich normal versuche soclhe Sachen irgendwie selbst auf die Reihe zu kriegen, aber bei diesem doofen Befehl bin ich wohl an meine Grenzen gestoßen. Muss dabei allerdings zugeben, dass es eine relativ großes Projekt werden soll. Fals wir die Abfrage irgendwie hin bekommen.
Angehängte Dateien
Dateityp: zip db.zip (23,3 KB, 1x aufgerufen)

Geändert von KnightOrk (27-05-2008 um 11:23 Uhr)
KnightOrk ist offline   Mit Zitat antworten
Alt 28-05-2008, 08:29   #10 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Ich war wohl etwas zu sehr im "AS2-Modus" ... das müsste gehen:

PHP-Code:
this.stop();

var 
lv = new LoadVars();

lv.onLoad = function(success) {
  if(
success) {
    if(
parseInt(this.BaWue) == 1) {
      
textfeld1.text "BaWue: "+this.BaWue;   
    }
  }
}
lv.load("db.php"); 
jedenfalls funzt es bei mir: http://www.surge-oe.de/stuff/test/
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 28-05-2008, 08:41   #11 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Jein, das funktioniert zwar, aber es "üperprüft" nicht wirklich die "Variable" in db.php. Setzt mal zum Spass in der db.php den Wert für BaWue auf 0, dann wirst du sehen, dass dein Codeschnipsel immer noch anzeigt das BaWue 1 ist. Was nicht richtig ist.

Ich hab übrigens jetzt auch mal Flash CS3 installiert. Fals Action Script 2 oder 3 das Problem besser lösen könnten, aber auch dort habe ich das selbe Problem. Ich hab alle 6 Varianten jetzt auchnochmal in Flash CS geschrieben und dort üperprüft. Auch dort geht es NICHT. Und dei :Void Code wird auch dort als Fehlerhaft gemeldet.

Geändert von KnightOrk (28-05-2008 um 08:44 Uhr)
KnightOrk ist offline   Mit Zitat antworten
Alt 28-05-2008, 08:48   #12 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Hmm ... wie gesagt, bei mir funzt das ... wenn ich in meinem Beispiel die Variable auf einen anderen Wert als 1 setze (steht jetzt auf 2) wird nix angezeigt, was ja basierend auf dem Script zu erwarten war.

Das was ich oben geschrieben habe ist AS2, wenn du CS3 nun benutzt musst du bei den Exporteinstellungen logischerweise auch einstellen das AS2 benutzt werden soll. Wenn das auf AS3 steht wirds Fehlermeldungen geben.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 28-05-2008, 08:56   #13 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Ja schon klar. Ich benutze jetzt "beide" Version. Wollte testen ob es nur an MX liegt oder an mir. Liegt aber wohl an mir, denn ich hab deinen Code einfach kopiert und die "gleiche" .swf erstellen lassen.

http://www.knightork.de/db_3_rm.swf

Ich habe den Wert in db.php nun mehrmals geändert.

Magste mir mal deine .swf und die .fla hoch schieben, damit ich die auf meinem Server testen kann. Vielleicht liegt es gar nicht an Flash sondern an dem Server.

Edit: Ok es scheint DOCH zu funktionieren. Allerdings mit extremen Verzögerungen. Der Wert war schon lange in der db.php geändert als er endlich im Script angezeigt wurde. Auch wenn ich die Seite komplett neu öffne, also nicht einfach nur Reloade werden Änderungen erst sehr spät angezeigt.

Geändert von KnightOrk (28-05-2008 um 09:00 Uhr)
KnightOrk ist offline   Mit Zitat antworten
Alt 28-05-2008, 09:00   #14 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
änder das lv.load mal so:

PHP-Code:
lv.load("db.php?noCache="+new Date().getTime()); 
Dann müsste sich das immer sofort ändern.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 28-05-2008, 09:15   #15 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 8
Perfekt. Ich danke Dir vielmals. Das funktioniert und ich hab den Code sogar schon "erweitert" so dass ich das Textfeld nicht mehr brauche, sondern endlich auf die Variable reagiert wird. Nämlich sie macht jetzt einfach nur den Button sichtbar und unsichtbar.

Sogar mehrere Variablen abfragen ist kein Problem.

Nochmal danke für deine Geduld. *geht jetzt wild wüst Buttons ein und ausblenden lassen auf seiner Homepage, ohne jedesmal die ganze .swf ändern zu müssen*

Nachtrag: Funktioniert sowohl für Action Script 1 als auch Action Script 2.

Geändert von KnightOrk (28-05-2008 um 09:27 Uhr)
KnightOrk 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 11:20 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele