Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-07-2006, 02:11   #1 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
shared object

guten morgen,

hab hier im forum eigentlich ein schönes beispiel zum shared object gefunden aber bekomme es leider nicht modifiziert.

ich möchte eigentlich nur was ganz simpeles:
wenn der btn gedrückt wurde soll das im shared object vermerkt werden damit das blaue rechteck darüber beim nächsten besuch schon komplett sichtbar ist.

ist bestimmt ganz einfach aber ich bekomme es einfach nicht hin.

viele grüße,
icon

edit:

hier noch das AS:

ActionScript:
  1. var obj = SharedObject.getLocal("Cookie");
  2. //
  3. // schreiben:
  4. this.btn_send.onRelease = function() {
  5.     obj.data.var1 = "hello";
  6.     obj.data.var2 = "there!";
  7.     obj.flush();
  8. };
  9. //
  10. // lesen:
  11. this.btn_get.onRelease = function() {
  12.     trace(obj.data.var1+" "+obj.data.var2);
  13.    
  14. };
  15.  
  16. // das liegt auf meinem button der die "animation" abspielt:
  17. on (press) {
  18.     _root.bm.gotoAndStop(10)
  19. }
Angehängte Dateien
Dateityp: zip SharedObject.zip (7,8 KB, 6x aufgerufen)

Geändert von icon (18-07-2006 um 10:56 Uhr)
icon ist offline   Mit Zitat antworten
Alt 18-07-2006, 14:53   #2 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
hat niemand eine idee oder eine anregung?

also ich will im endeffekt nur dem sharedobject miteilen ob der button gedrückt wurde oder nicht.

was halt auch gehen würde ist dem sharedobject mitzuteilen ob "_root.bm" noch im 1 frame liegt oder im 10 (also ob die ani schon abgespielt wurde).

ich bin leider immer noch nicht weiter gekommen.
grüße, icon
icon ist offline   Mit Zitat antworten
Alt 18-07-2006, 15:02   #3 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
dann mach doch vor der ersten deklaration eine abfarge ob das object schon gibt oder nicht darauf hin kannst du dann enscheiden was gemacht werden soll....

ich hab sowas mal gebaut
PHP-Code:
// if the SWF in implementet in an HTML page
// so you can check if -for example- the startanimation should start..
obj_ft SharedObject.getLocal("runfirstime");
function 
setFirst() {
        
obj_ft.data.firstime "run";
        
obj_ft.flush();
}
if (
obj_ft.data.firstime != "run") {
        
trace("that' s the firtstime we meet!");
        
// this will be shown in the first time
} else {
        
// this will be shown after refesh
        
trace("hey - i know ya");
}
setFirst(); 
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:22   #4 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
hallo,

danke das bringt mich schonmal ein stück weiter.
allerdings will mir aber immer noch kein licht aufgehen wie ich beim 2 aufruf des filmes überprüfen kann ob beim 1 aufruf des filmes der button gedrückt wurde?!

ich hab mal meine datei angehangen. würde mich freuen wenn jemand mal reinschauen könnte.

grüße, icon
Angehängte Dateien
Dateityp: zip shared object.zip (6,1 KB, 5x aufgerufen)
icon ist offline   Mit Zitat antworten
Alt 19-07-2006, 10:28   #5 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Die Lösung hattest du doch eigentlich schon.

Einfach diese Zeile: obj_ft.data.firstime = "run";

so: _root.obj_ft.data.firstime = "run";
in den ButtonCode einfügen
McUsher ist offline   Mit Zitat antworten
Alt 19-07-2006, 11:48   #6 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
hallo mcusher,

da tut sich bei mir nichts! kann aber auch sein das ich mitlerweile schon zu verwirrt bin von dem ganzen!

hier nochmal mein vorhaben:
also ich hab später im meinem flash film ca. 10 buttons. wenn man einen der buttons drückt spielt sich jeweils eine animation ab.

ob der button zu dieser animation schon gedrückt wurde soll in dem shared cookie vermerkt werden.
zusätzlich muss natürlich beim 2 aufruf des flash film am anfang überprüft werden welcher button schon gedrückt wurde.


grüße, icon
icon ist offline   Mit Zitat antworten
Alt 19-07-2006, 12:17   #7 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Wenn du das wiederholt testest, musst du natürlich das
Flashcookie vorher löschen, bei mir tat das auf Anhieb wie
du möchtest mit der einen verschobenen und um "_root." ergänzten
Zeile ..
McUsher ist offline   Mit Zitat antworten
Alt 19-07-2006, 12:58   #8 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
ah ja jetzt gehts, danke!

bin gerade dabei das ganze für 10 buttons zu erweitern. wie stell ich das am besten an?

ich könnte natürlich diese abfrage jetzt 10 mal kopieren und für den jeweiligen button umändern. das erscheint mir allerdings doch extremst umständlich.
ActionScript:
  1. // if the SWF in implementet in an HTML page
  2. // so you can check if -for example- the startanimation should start..
  3. obj_ft = SharedObject.getLocal("runfirstime");
  4. function setFirst() {
  5.     obj_ft.flush();
  6. }
  7. if (obj_ft.data.firstime != "run") {
  8.     // this will be shown in the first time
  9.     bm.gotoAndStop(1);
  10. } else {
  11.     // this will be shown after refesh
  12.     trace("hey - i know ya");
  13.     bm.gotoAndStop(10);
  14. }
  15. setFirst();
  16.  
  17. //aufruf:
  18. btn.onPress = function() {
  19.     bm.gotoAndStop(10);
  20.     _root.obj_ft.data.firstime = "run";
  21. };

fällt jemandem ein besserer lösungsweg ein?

grüße, icon

Geändert von icon (19-07-2006 um 13:00 Uhr)
icon ist offline   Mit Zitat antworten
Alt 19-07-2006, 13:21   #9 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Ich bin mal so lieb:
ActionScript:
  1. obj_ft = SharedObject.getLocal("runfirstime");
  2. buttonCall(obj_ft.data.butPressedID);
  3.  
  4. function buttonCall(id)
  5. {
  6.     trace("[-- id called: "+ id + " --]");
  7.     obj_ft.data.butPressedID = id;
  8.     if(id=="greenbut")
  9.     {
  10.         gotoAndPlay(10);
  11.     }
  12.     else if(id=="bluebut");
  13.     {
  14.         gotoAndPlay(20);
  15.     }
  16.     // usw...
  17. }
  18.  
  19. greenbut.onPress = function() {
  20.    _root.buttonCall("greenbut");
  21. };
  22. bluebut.onPress = function() {
  23.    _root.buttonCall("bluebut");
  24. };

.. is auch getestet
McUsher ist offline   Mit Zitat antworten
Alt 19-07-2006, 16:53   #10 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
hallo mcusher,

danke, das sieht schonmal sehr gut aus soweit!
wie kann ich denn mehrere ID's im cookie speichern? also im moment funktioniert das ja immer nur mit 1er wenn ich mich nicht irre.

habs mal probiert zu modifizieren und bin jetzt soweit das zur laufzeit alle aufgerufen werden:

ActionScript:
  1. obj_ft = SharedObject.getLocal("runfirstime");
  2. buttonCall(obj_ft.data.butPressedID);
  3. function buttonCall(id) {
  4.     trace("[-- id called: "+id+" --]");
  5.     obj_ft.data.butPressedID = id;
  6.     //btn1
  7.     if (id == "btn1") {
  8.         bm.gotoAndStop(10);
  9.     }
  10.     //btn2
  11.     if (id == "btn2") {
  12.         bm2.gotoAndStop(10);
  13.     }
  14.     //btn3
  15.     if (id == "btn3") {
  16.         bm3.gotoAndStop(10);
  17.     }
  18. }
  19. btn1.onPress = function() {
  20.     _root.buttonCall("btn1");
  21.     };
  22. btn2.onPress = function() {
  23.     _root.buttonCall("btn2");
  24.     };
  25. btn3.onPress = function() {
  26.     _root.buttonCall("btn3");
  27.     };


allerdings ist halt wenn ich den film erneut aurufe immer nur der zuletzt gedrückte button bzw die dazu gehörige animation aktiv.

viele grüße, icon
icon ist offline   Mit Zitat antworten
Alt 19-07-2006, 17:34   #11 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Achso, ich hatte das so verstanden, dass dies dein Ansinnen auch war...

Dann müsstest du jeden jemals gedrückten button dir merken:
ActionScript:
  1. obj_ft = SharedObject.getLocal("runfirstime");
  2. for (i in obj_ft.data.butPressedIDs) {
  3.     if (obj_ft.data.butPressedIDs) {
  4.         trace("id: "+i+" has already been pressed");
  5.         buttonCall(i);
  6.     }
  7. }
  8. function buttonCall(id) {
  9.     trace("[-- id called: "+id+" --]");
  10.     if (!obj_ft.data.butPressedIDs) {
  11.         obj_ft.data.butPressedIDs = new Object();
  12.     }
  13.     obj_ft.data.butPressedIDs[id] = true;
  14. // usw...
  15.  


bei deinen gotoAndPlay(10) musst du natürlich aufpassen, dass die sachen auch schon alle geladen sind, wenn das initial aufgerufen wird
McUsher ist offline   Mit Zitat antworten
Alt 19-07-2006, 19:45   #12 (permalink)
1x1
 
Registriert seit: Aug 2005
Beiträge: 255
juchu es geht jetzt genau so wie es soll!
vielen vielen dank!


schönen abend dir noch!
grüße, icon
icon ist offline   Mit Zitat antworten
Alt 22-07-2006, 13:40   #13 (permalink)
05
 
Benutzerbild von gorgeous
 
Registriert seit: Nov 2004
Beiträge: 346
hallo!

hab den thread vorhin über die suche entdeckt!

mich würd mal interessieren ob und wie man die schon angeklickten buttons auch wieder rückgängig machen kann.
ich hatte die idee eine leere ID zu übergeben aber das ging leider nicht.

das aus den obigen threads zusammengefasste original AS:
ActionScript:
  1. obj_ft = SharedObject.getLocal("runfirstime");
  2.  
  3. for (i in obj_ft.data.butPressedIDs) {
  4.  
  5.     if (obj_ft.data.butPressedIDs) {
  6.  
  7.         trace("id: "+i+" has already been pressed");
  8.  
  9.         buttonCall(i);
  10.  
  11.     }
  12.  
  13. }
  14.  
  15. function buttonCall(id) {
  16.  
  17.     trace("[-- id called: "+id+" --]");
  18.  
  19.     if (!obj_ft.data.butPressedIDs) {
  20.  
  21.         obj_ft.data.butPressedIDs = new Object();
  22.  
  23.     }
  24.  
  25.     obj_ft.data.butPressedIDs[id] = true;
  26.     //btn1
  27.  
  28.     if (id == "btn1") {
  29.  
  30.         bm.gotoAndStop(10);
  31.  
  32.     }
  33.  
  34.     //btn2
  35.  
  36.     if (id == "btn2") {
  37.  
  38.         bm2.gotoAndStop(10);
  39.  
  40.     }
  41.  
  42.     //btn3
  43.  
  44.     if (id == "btn3") {
  45.  
  46.         bm3.gotoAndStop(10);
  47.  
  48.     }
  49.  
  50. }
  51.  
  52. btn1.onPress = function() {
  53.  
  54.     _root.buttonCall("btn1");
  55.  
  56.     };
  57.  
  58. btn2.onPress = function() {
  59.  
  60.     _root.buttonCall("btn2");
  61.  
  62.     };
  63.  
  64. btn3.onPress = function() {
  65.  
  66.     _root.buttonCall("btn3");
  67.  
  68.     };


also kurz gesagt suche ich einfach eine möglichkeit einen hinzugefügten btn wieder aus dem shared object zu löschen.


sonnige grüsse!
gorgeous
__________________
:)

Geändert von gorgeous (23-07-2006 um 03:18 Uhr)
gorgeous ist offline   Mit Zitat antworten
Alt 25-07-2006, 14:53   #14 (permalink)
Flash Gordon
 
Benutzerbild von McUsher
 
Registriert seit: Jul 2006
Beiträge: 190
Die richtige Transferleistung wäre zum Beispiel gewesen:
ActionScript:
  1. function remove(id) {
  2.     obj_ft.data.butPressedIDs[id] = false;
  3. }
oder
ActionScript:
  1. function buttonCall(id, save) { // save ist true oder false
  2.     trace("[-- id called: "+id+" --]");
  3.     if (!obj_ft.data.butPressedIDs) {
  4.         obj_ft.data.butPressedIDs = new Object();
  5.     }
  6.     obj_ft.data.butPressedIDs[id] = save;
  7. ........

Sry, war das Wochenende weg.. deshalb die späte Antwort...
McUsher ist offline   Mit Zitat antworten
Alt 25-07-2006, 17:45   #15 (permalink)
05
 
Benutzerbild von gorgeous
 
Registriert seit: Nov 2004
Beiträge: 346
hi McUsher!

das "oder" zwischen deinem post hab ich jetzt nicht ganz verstanden. hängt das zusammen oder sind das einfach 2 verschieden varianten?

wie muss ich das ganze aufrufen? löscht sich die bereits registrierte ID dann beim 2 btn klick oder wie ist das zu verstehen?

so hab ich das jetzt im moment: (das removen geht nicht)
ActionScript:
  1. obj_ft = SharedObject.getLocal("runfirstime");
  2. for (i in obj_ft.data.butPressedIDs) {
  3.     if (obj_ft.data.butPressedIDs) {
  4.         trace("id: "+i+" has already been pressed");
  5.         buttonCall(i);
  6.     }
  7. }
  8. function buttonCall(id, save) {
  9.     // save ist true oder false
  10.     trace("[-- id called: "+id+" --]");
  11.     if (!obj_ft.data.butPressedIDs) {
  12.         obj_ft.data.butPressedIDs = new Object();
  13.     }
  14.     obj_ft.data.butPressedIDs[id] = save;
  15.     //btn1
  16.     if (id == "btn1") {
  17.         bm.gotoAndStop(10)
  18.     }
  19.     //btn2
  20.     if (id == "btn2") {
  21.         bm2.gotoAndStop(10)
  22.     }
  23.     //btn3
  24.     if (id == "btn3") {
  25.         bm3.gotoAndStop(10)
  26.     }
  27. }
  28. btn1.onPress = function() {
  29.     _root.buttonCall("btn1");
  30. };
  31. btn2.onPress = function() {
  32.     _root.buttonCall("btn2");
  33. };
  34. btn3.onPress = function() {
  35.     _root.buttonCall("btn3");
  36. };

viele grüsse, gorgeous
__________________
:)
gorgeous 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 06:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele