b-free
Goto Top

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:
// 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

Content-Key: 212978

Url: https://administrator.de/contentid/212978

Printed on: April 26, 2024 at 07:04 o'clock

Member: colinardo
colinardo Jul 31, 2013 updated at 09:33:38 (UTC)
Goto Top
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
Member: B-free
B-free Jul 31, 2013 updated at 09:43:00 (UTC)
Goto Top
Hi!

1.) a.
Ich dachte mir das so, dass ich die werte die in
done.data["WurzelTR"]  
und
done.data["yfx"]  
neu geladen werden.

b.
In den Referenzen von Adobe habe ich leider nur sehr wenig gefunden, obwohl ich intensiv gesucht habe. face-sad

2.) Mein eindruck von diesem Forum (da war ich vor Administrator.de) ist, das es nur noch ca. 4 aktive mitglieder gibt. face-sad.
deshalb bin auch auf Admin.de umgestiegen!


Tschau
B-Free
Member: colinardo
colinardo Jul 31, 2013 updated at 10:00:46 (UTC)
Goto Top
mach die Zuweisung der Daten an das SharedObject in dieser Form:
done.data.WurzelTR = 0;
steht übrigens hier in der Referenz.
Member: B-free
B-free Jul 31, 2013 at 11:01:35 (UTC)
Goto Top
Die Zuweisung hab ich ja schon gemacht. nur in einer anderen swf Datei! (sagen wir bla.swf)

jetzt wird in der Datei (bla2.swf) eine if abfrage gemacht, wo der wert
done.data["WurzelTR"]  
abgefragt wird. ein objekt wird daraufhin sichtbar, oder unsichtbar gemacht (auch in bla2.swf).

jetzt wird der wert wieder von bla.swf verändert.

daraufhin soll, wenn man in der bla2.swf auf "reload" klickt der wert erneut geladen werden und darauf hin das objekt wieder sichtbar/unsichtbar machen. WAS ER ABER NICHT MACHT!!!

der wert wird nicht neu geladen!


face-sad
B-free
Member: colinardo
colinardo Jul 31, 2013 updated at 13:50:34 (UTC)
Goto Top
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:
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;
		}

	}
}
dann greifst du in Zukunft einfach so auf den Inhalt des SharedObjects zu (den Rest macht ja die Klasse SO):
//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.
Member: B-free
B-free Jul 31, 2013 at 13:40:21 (UTC)
Goto Top
Erstmal Danke!

in das mit dem Paket muss ich mich noch reinfummeln. ansonsten sieht das gut aus face-smile

die Sache mit dem Inhalt abfragen muss ich mir noch genauer angucken...


Tschau
B-free

ps. Ich lass es erstmal noch ungelöst...
Member: colinardo
colinardo Jul 31, 2013 updated at 13:44:49 (UTC)
Goto Top
hier noch eine Demo dafür im Flash CS6 Format zum Download
damit sollte es dann klarer sein !
Member: B-free
B-free Aug 01, 2013 updated at 06:46:44 (UTC)
Goto Top
Danke!

aber eine Sache noch:

Zitat von @colinardo:

Diese Klasse bitte in eine Separate Datei mit der Endung *.as speichern und in Flash den SWF-Dateien zuordnen.

und wie bitte mache ich das???


Danke!
B-free
Member: colinardo
colinardo Aug 01, 2013 at 07:13:07 (UTC)
Goto Top
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.
Member: B-free
B-free Aug 01, 2013 at 08:33:30 (UTC)
Goto Top
Danke! face-smile

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. (oder so)??? kann aber auch was anderes gewesen sein.


Tschau!
B-free face-smile

ps. Ich glaube das mit der If abfrage:
 var s:String = done.getValue("WurzelTR");  
hab ich auch kapiert. man muss dan einfach abfragen
if (s == 1 /*z.B.*/) {
       blablabla ();
}
und dann geht das face-smile (hoffe ihr habt das verstanden was ich da an Kauderwelsch geschrabbelt hab face-wink )
Member: colinardo
colinardo Aug 01, 2013 at 08:45:14 (UTC)
Goto Top
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.
Member: B-free
B-free Aug 01, 2013 at 09:16:10 (UTC)
Goto Top
DAAAANKEEEEE!


Hast mir Extrem geholfen!!!


face-smile face-smile face-smile face-smile face-smile

B-free