Datumsabfrage Adventskalender

Bina2200

Grünschnabel
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:
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!
 
Zuletzt bearbeitet:
Ich würde hier statt 'switch/case' eher eine for-Schleife verwenden, also etwas in dieser Art:
Code:
for (i = 1; i < datum; i++) {
     öffne(i); // öffne = Funktion zum Öffnen eines Türchens
}
aktiviere(datum); // aktiviere = Funktion zum Aktivieren eines Türchens
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()'.
 
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!
 
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
BL
 
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
BL
 
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.
 
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:
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!!
 
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!
 
Zurück