ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1942
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Bina2200 ist offline 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)
     

  2. #2
    Zinken ist offline Mitglied Smaragd
    Registriert seit
    Aug 2006
    Beiträge
    1.020
    Ich würde hier statt 'switch/case' eher eine for-Schleife verwenden, also etwas in dieser Art:
    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
    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()'.
     

  3. #3
    Bina2200 ist offline 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!
     

  4. #4
    BrainLight ist offline 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
    BL
     
    Wenns zum Weinen nicht reicht, dann lache einfach!

  5. #5
    Bina2200 ist offline 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)
     

  6. #6
    BrainLight ist offline 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
    BL
     
    Wenns zum Weinen nicht reicht, dann lache einfach!

  7. #7
    Zinken ist offline Mitglied Smaragd
    Registriert seit
    Aug 2006
    Beiträge
    1.020
    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.
     

  8. #8
    Bina2200 ist offline 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!!
     

  9. #9
    Bina2200 ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    7
    Achja... Und das ist die Fehlermeldung, die ich bekomme: MainTimeline/pClick(). 2 erwartet, 1 erhalten
     

  10. #10
    Bina2200 ist offline 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!
     

  11. #11
    Zinken ist offline Mitglied Smaragd
    Registriert seit
    Aug 2006
    Beiträge
    1.020
    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:
    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"});
    }
    Etwas verschachtelt, aber ich denke, so sollte die Funktionsweise klar werden...
    Die Monatsabfrage musst Du natürlich noch irgendwo einbauen.
     

Thema nicht erledigt

Ähnliche Themen

  1. select datumsabfrage
    Von truckncountry im Forum PHP
    Antworten: 4
    Letzter Beitrag: 05.10.10, 10:35
  2. Schreibweise bei Datumsabfrage
    Von ImDoomed im Forum PHP
    Antworten: 2
    Letzter Beitrag: 08.07.10, 14:33
  3. Datumsabfrage
    Von intercorni im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 18.11.05, 14:39
  4. [MySQL] Datumsabfrage
    Von Ingo41 im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 19.08.05, 09:59
  5. datumsabfrage pro woche
    Von xghostonastagex im Forum PHP
    Antworten: 5
    Letzter Beitrag: 22.09.04, 12:56

Stichworte