AS3 Dokument reload mit sharedObject reload.
Hi Leute,
Ich habe mir ein kleines AS3 dingsdabums gebastelt, was mir anzeigt welche Tutorials ich schon besucht und beendet habe und welche neu dazugekommen sind.
Momentan sieht es so aus:
Das Problem:
der Button "reload" (Zeile 41 - 46) springt auf Frame 1. von da aus geht es weiter auf Frame 2, alles sollte Neu geladen werden. aber wird es nicht!!!
Jemand vielleicht ein Tipp??? Hab ich was falsch gemacht???
Gibt es vielleicht so etwas wie:
???
Freue mich über jeden Kommentar und Jede (hilfreiche) Antwort!!!
Tschau
B-Free
Ich habe mir ein kleines AS3 dingsdabums gebastelt, was mir anzeigt welche Tutorials ich schon besucht und beendet habe und welche neu dazugekommen sind.
Momentan sieht es so aus:
// Frame 2
stop ();
var done:SharedObject;
reload.buttonMode = true;
Zurücksetzen.buttonMode = true;
WurzelTR2.buttonMode = true;
yfx2.buttonMode = true;
done = SharedObject.getLocal('beautifycode', "/", false);
if (done.data["WurzelTR"] == 1) {
WurzelTR2.visible = true;
WurzelTR1.visible = true;
}
else {
WurzelTR2.visible = false;
WurzelTR1.visible = false;
}
if (done.data["yfx"] == 1) {
yfx1.visible = true;
yfx2.visible = true;
}
else {
yfx1.visible = false;
yfx2.visible = false;
}
Zurücksetzen.addEventListener(MouseEvent.CLICK, Zurücksetzen);
function Zurücksetzen(event:MouseEvent):void
{
done = SharedObject.getLocal('beautifycode', "/", false);
done.data["WurzelTR"] = "NICHTS";
done.data["yfx"] = "NICHTS";
done.flush();
gotoAndPlay (1);
}
reload.addEventListener(MouseEvent.CLICK, reloadin);
function reloadin(event:MouseEvent):void
{
gotoAndPlay (1);
}
WurzelTR2.addEventListener(MouseEvent.CLICK, WurzelTR_reset);
yfx2.addEventListener(MouseEvent.CLICK, yfx_reset);
function WurzelTR_reset(event:MouseEvent):void
{
done = SharedObject.getLocal('beautifycode', "/", false);
done.data["WurzelTR"] = 0;
done.flush();
gotoAndPlay (1);
}
function yfx_reset(event:MouseEvent):void
{
done = SharedObject.getLocal('beautifycode', "/", false);
done.data["yfx"] = 0;
done.flush();
gotoAndPlay (1);
}
Das Problem:
der Button "reload" (Zeile 41 - 46) springt auf Frame 1. von da aus geht es weiter auf Frame 2, alles sollte Neu geladen werden. aber wird es nicht!!!
Jemand vielleicht ein Tipp??? Hab ich was falsch gemacht???
Gibt es vielleicht so etwas wie:
documentReload ();
Freue mich über jeden Kommentar und Jede (hilfreiche) Antwort!!!
Tschau
B-Free
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 212978
Url: https://administrator.de/contentid/212978
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo B-Free,
sorry aber du verlangst hier von uns das wir hellsehen können. Z.b. weiß man nicht welches Steuerelement du aktualisieren möchtest. Bitte sieh dir erst mal die AS3-Referenz an.
Eventuell wäre ein spezialisiertes Forum für dich die bessere Wahl (z.B.:http://www.flashforum.de/forum/actionscript-3/)
Grüße Uwe
sorry aber du verlangst hier von uns das wir hellsehen können. Z.b. weiß man nicht welches Steuerelement du aktualisieren möchtest. Bitte sieh dir erst mal die AS3-Referenz an.
Eventuell wäre ein spezialisiertes Forum für dich die bessere Wahl (z.B.:http://www.flashforum.de/forum/actionscript-3/)
Grüße Uwe
mach die Zuweisung der Daten an das SharedObject in dieser Form:
steht übrigens hier in der Referenz.
done.data.WurzelTR = 0;
OK verstehe jetzt,
das Problem ist das unterschiedliche SWF-Dateien sich jeweils eine gecachte Version des SharedObject anlegen auf die sie zugreifen. Das Problem und eine Lösung sind hier beschrieben: http://www.calculator-tab.com/blog/2008/08/accessing-a-local-shared-obj ...
Du musst also eine Klasse erstellen die das SharedObject lädt und wieder verwirft. Diese Klasse bitte in eine Separate Datei mit der Endung *.as speichern und in Flash den SWF-Dateien zuordnen.
Diese könnte z.B. so aussehen:
dann greifst du in Zukunft einfach so auf den Inhalt des SharedObjects zu (den Rest macht ja die Klasse SO):
Grüße Uwe
Gelöste Beitrage bitte auch als solche markieren.Danke.
das Problem ist das unterschiedliche SWF-Dateien sich jeweils eine gecachte Version des SharedObject anlegen auf die sie zugreifen. Das Problem und eine Lösung sind hier beschrieben: http://www.calculator-tab.com/blog/2008/08/accessing-a-local-shared-obj ...
Du musst also eine Klasse erstellen die das SharedObject lädt und wieder verwirft. Diese Klasse bitte in eine Separate Datei mit der Endung *.as speichern und in Flash den SWF-Dateien zuordnen.
Diese könnte z.B. so aussehen:
package {
import flash.net.SharedObject;
public class SO {
private var so:SharedObject;
public function setValue(id:String,val:String){
load_so();
so.data[id] = val;
unload_so();
}
public function getValue(id:String){
load_so();
var retString:String = so.data[id];
unload_so();
return retString;
}
private function load_so():void{
so = SharedObject.getLocal('beautifycode','/',false);
}
private function unload_so():void{
so.flush();
so = null;
}
}
}
//Instanz-Object der neuen Klasse erstellen
var done:SO = new SO;
// Inhalt setzen
done.setValue("WurzelTR","Hier der Wert");
//Inhalt abfragen
var s:String = done.getValue("WurzelTR");
Grüße Uwe
Gelöste Beitrage bitte auch als solche markieren.Danke.
hier noch eine Demo dafür im Flash CS6 Format zum Download
damit sollte es dann klarer sein !
damit sollte es dann klarer sein !
Schau mal in die Demo-Datei. Du erstellst mit Flash ein neues Klassendokument und gibst der Datei den Namen SO.as (der Name ist wichtig und muss gleich wie der Klassennamen benannt werden) . Dann passt du den Code an deine Bedürfnisse an und fügst ihn in die Klassendatei ein. Die Datei sollte im gleichen Pfad wie die Flash-Projektdatei liegen, so erkennt Flash diese automatisch und du kannst sie in deinem Projekt verwenden.
Automatisch? ich dachte irgendwo gelesen zu haben, dass man in den Dokumenteigenschaften irgendwas verändern musste.
Nein, es reicht wirklich aus wenn es im selben Verzeichnis liegt. Nur wenn du die Datei an einem anderen Ort speichern möchtest musst du diesen Pfad in den Projekteigenschaften hinterlegen.hab ich auch kapiert. man muss dan einfach abfragen if (s == 1 /*z.B.*/) {
und dann geht das
Korrekt verstanden .getValue('AbzufragenderWert') fragt einen Wert ab und .setValue('ZuändernderWert','Value') ändert einen angegebenen Wert auf Value.und dann geht das