ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
1619
1619
EMPFEHLEN
-
02.12.11 17:08 #1
Rookie
- Registriert seit
- Dec 2011
- Beiträge
- 7
Hallo zusammen,
ich setze gerade eine Art Adventskalender um und bekomme die Datumsabfrage leider nicht so hin, dass nur das jeweilige Türchen des aktuellen Tages geöffnet werden kann. Außerdem sollen die bereits geöffneten Türchen auch geöffnet bleiben.
Ich sollte noch dazusagen, dass mein Kalender nur 12 Türchen hat =)
Hier mein Ansatz:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
var zeit:Date = new Date(); var datum:Number = zeit.getDate(); var month:Number = zeit.getMonth(); if (month == 12) { switch (datum) { case 5 : p0Click(null); break; case 6 : p1Click(null); break; case 7 : p2Click(null); break; case 8 : p3Click(null); break; case 9 : p4Click(null); break; case 10 : p5Click(null); break; case 11 : p6Click(null); break; case 12 : p7Click(null); break; case 13 : p8Click(null); break; case 14 : p9Click(null); break; case 15 : p10Click(null); break; case 16 : p11Click(null); break; default : trace(""); break; } }
Wäre super, wenn mir jemand weiterhelfen könnte..
Vielen Dank schon mal!Geändert von Bina2200 (02.12.11 um 17:40 Uhr)
-
02.12.11 17:53 #2
Mitglied Smaragd
- Registriert seit
- Aug 2006
- Beiträge
- 1.021
Ich würde hier statt 'switch/case' eher eine for-Schleife verwenden, also etwas in dieser Art:
Falls Du jeweils bloß z.B. jeweils einen MovieClip abspielen willst, kannst Du diese auch vorher in ein Array verpacken, das Du dann in der Schleife durchläufst. Statt 'öffne(i)' hättest Du dann halt beispielsweise 'array[i].play()'.Code :1 2 3 4
for (i = 1; i < datum; i++) { öffne(i); // öffne = Funktion zum Öffnen eines Türchens } aktiviere(datum); // aktiviere = Funktion zum Aktivieren eines Türchens
-
02.12.11 18:14 #3
Rookie
- Registriert seit
- Dec 2011
- Beiträge
- 7
Vielen lieben Dank! Funktioniert wunderbar!
Ich weiß nur nicht wirklich, wie ich die Funktion für die Aktivierung der bereits geöffneten Türchen angehen soll. Könnte mir da jemand auf die Sprünge helfen? =)
Danke!
-
02.12.11 18:51 #4
Mitglied Bronze
- Registriert seit
- Apr 2004
- Ort
- Leipzig
- Beiträge
- 29
Da JavaScript client-abhängig ist, ist dies gar nicht so einfach.
Die einzige Möglichkeit dies zu realsieren, sehe ich in dem Setzen von Cookies, die über das Datums-Intervall des Weihnachtskalenders existieren (dürfen).
LG
BLWenns zum Weinen nicht reicht, dann lache einfach!
-
02.12.11 19:02 #5
Rookie
- Registriert seit
- Dec 2011
- Beiträge
- 7
Danke für den Hinweis.. Ich will das Flash aber lediglich lokal ausführen =)
Geändert von Bina2200 (02.12.11 um 19:07 Uhr)
-
02.12.11 19:31 #6
Mitglied Bronze
- Registriert seit
- Apr 2004
- Ort
- Leipzig
- Beiträge
- 29
Huch

Das sah auf Anhieb etwas nach JavaScript aus
Sorry
Bin quasi grad in der falschen Kategorie unterwegs ...
Egal...
Ich weiß jetzt wirklich nicht, ob Flash (in welcher Generetaion auch immer) lokale Schreibrechte hat.
Falls dies so sein sollte, dann schreib doch einfach die aktuelle anzahl der geöffneten Türchen in eine lokale txt-file.
Damit könntest Du dann gut und gerne hantieren, wie Du möchtest.
LG
BLWenns zum Weinen nicht reicht, dann lache einfach!
-
02.12.11 19:47 #7
Mitglied Smaragd
- Registriert seit
- Aug 2006
- Beiträge
- 1.021
Verstehe ich Dich richtig, dass Du in einer Datei speichern willst, welche Türchen bereits angeklickt wurden? Das geht leider nur über Umwege, da Daten aus Flash heraus nicht einfach so gespeichert werden können. Soll die Flash-Anwendung denn im Browser oder im Standalone-Player (bzw. Export als .exe) laufen?
Bei einer lokalen Anwendung außerhalb des Browsers kannst Du z.B. per XML-Socket eine Verbindung zu einem zusätzlichen Programm (geschrieben in Python, Java oder sonstwas) aufbauen und dieses dann die übergebenen Daten speichern lassen. Ist relativ umständlich, aber eine einfachere Lösung kenne ich auch nicht.
Edit: Zu langsam... Aber nein, Flash hat keine lokalen Schreibrechte.
-
02.12.11 19:58 #8
Rookie
- Registriert seit
- Dec 2011
- Beiträge
- 7
Danke für eure Antworten!
Ich bin leider noch nicht besonders fit in Actionscript. Ich weiß.. Das macht die Sache natürlich nicht leichter
Ich bin grad wieder so weit, dass nichts mehr funktioniert... Weder Datumsabfrage, noch sonst irgendwas
Generell hätte ich das mit den geöffneten Türchen gerne mit einer Abfrage gelöst. Banal gesagt: Wenn der 4.12., zeige Türchen 1,2,3,4.
Die Anwendung soll im Standalone-Player laufen.
Dürfte ich euch nochmal meinen Code bzgl. Datumsabfrage zeigen? Bin grad ein wenig am verzweifeln...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
var zeit:Date = new Date(); var datum:Number = zeit.getDate(); var month:Number = zeit.getMonth(); trace(datum); trace(i); var i; var k; init(); //init function init():void{ for(var k:uint = 0; k < 12; k++){ MovieClip(getChildByName("p"+k)).alpha = 1; MovieClip(getChildByName("p"+k)).buttonMode = true; MovieClip(getChildByName("p"+k)).addEventListener(MouseEvent.CLICK, pClick); } } for (i = 1; i < datum; i++) { function pClick(e:MouseEvent,i):void{ switch (e.target.name){ case "p0": Tweener.addTween(p0, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p1": Tweener.addTween(p1, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p2": Tweener.addTween(p2, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p3": Tweener.addTween(p3, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p4": Tweener.addTween(p4, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p5": Tweener.addTween(p5, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p6": Tweener.addTween(p6, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p7": Tweener.addTween(p7, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p8": Tweener.addTween(p8, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p9": Tweener.addTween(p9, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p10": Tweener.addTween(p10, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; case "p11": Tweener.addTween(p11, {alpha:0, time:0.5, transition:"easeOutCirc"}); break; default: trace("Hat wohl nich geklappt"); } } }
Ich bedanke mich schon mal herzlich!!
-
02.12.11 20:02 #9
Rookie
- Registriert seit
- Dec 2011
- Beiträge
- 7
Achja... Und das ist die Fehlermeldung, die ich bekomme: MainTimeline/pClick(). 2 erwartet, 1 erhalten
-
02.12.11 20:25 #10
Rookie
- Registriert seit
- Dec 2011
- Beiträge
- 7
Ok.. Das mit den geöffneten Türen -je nach Datum- habe ich jetzt mittels If-Bedingungen hinbekommen. Ich hab die Lösung ja im Endeffekt schon selbst hingeschrieben =)
Jetzt fehlt mir nur noch die Datumsabfrage.. Hat jemand eine Idee wie es funktionieren könnte, bzw. wo der Fehler liegt?
Dankeschön!
-
03.12.11 11:07 #11
Mitglied Smaragd
- Registriert seit
- Aug 2006
- Beiträge
- 1.021
Ahem, sorry, aber eine Funktion innerhalb einer Schleife zu definieren, ergibt keinen Sinn. Der Aufruf der Funktion sollte dort erfolgen, um Dir das komplette switch/case-Konstrukt zu ersparen. Du führst immer die gleiche Aktion auf unterschiedlichen Objekten aus - perfekt für eine for-Schleife...
Und nur am Rande: um von 0 bis 12 zu zählen, brauchst du kein 'unsigned integer'. 'int' tut es hier völlig.
Ohne jetzt den Rest Deiner Programmierung zu kennen, hier mal der Ansatz:
Etwas verschachtelt, aber ich denke, so sollte die Funktionsweise klar werden...Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
var zeit:Date = new Date(); var datum:Number = zeit.getDate(); var month:Number = zeit.getMonth(); var tueren:Array = new Array(); // Deine Türchen init(); function init():void{ // Alle Türchen in ein Array packen, um leichter darauf zugreifen zu können for (var k:int = 0; k < 12; k++){ var obj:MovieClip = MovieClip(getChildByName("p"+k)); obj.alpha = 1; tueren.push(obj); } } // Schleife durchläuft alle Türchen bis 'gestern' und öffnet sie for (var i:int =0; i < datum; i++) { oeffne(tueren[i]); // siehe weiter unten } // Türchen 'heute' wird anklickbar gemacht var heute:MovieClip = tueren[datum]; heute.buttonMode = true; heute.addEventListener(MouseEvent.CLICK, clickmich); // Funktion, die beim Anklicken aufgerufen wird function clickmich(e:MouseEvent):void { oeffne(e.target); } // Funktion zum Öffnen eines Türchens function oeffne(obj:MovieClip):void { // Sofern das die Aktion zum Öffnen ist: Tweener.addTween(obj, {alpha:0, time:0.5, transition:"easeOutCirc"}); }
Die Monatsabfrage musst Du natürlich noch irgendwo einbauen.
Ähnliche Themen
-
select datumsabfrage
Von truckncountry im Forum PHPAntworten: 4Letzter Beitrag: 05.10.10, 10:35 -
Schreibweise bei Datumsabfrage
Von ImDoomed im Forum PHPAntworten: 2Letzter Beitrag: 08.07.10, 14:33 -
Datumsabfrage
Von intercorni im Forum Flash PlattformAntworten: 2Letzter Beitrag: 18.11.05, 14:39 -
[MySQL] Datumsabfrage
Von Ingo41 im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 19.08.05, 09:59 -
datumsabfrage pro woche
Von xghostonastagex im Forum PHPAntworten: 5Letzter Beitrag: 22.09.04, 12:56




Zitieren
Login