tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
295
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    funkymatti funkymatti ist offline Mitglied
    Registriert seit
    Oct 2006
    Beiträge
    15
    Hallo,

    ich habe ein Problem mit meiner Navigation. Meine Flashseite besteht aus 4 Movieclips, die sich beim Mouseover skalieren. Eine Eigentschft die ich nicht erstellen konnte, ist dass die MC 2, 3, 4 beim vergrössern eines MC's automatisch die Position verändern und immer in einem Abstand von 20 px zum vorhergehenden MC stehen bleiben. Ich habe dafür eine Variable mit dem Namen follow_obj erstellt und in einer if-Anweisung in der Prototype Slidefunktion hinterlegt.

    Folgender Code soll dies ermöglichen:



    Code :
    1
    
     this._x + this.follow_mc._width + 20;


    Leider funktioniert das nicht. Vielleicht hat jemand eine Idee. Ich bin kein Flash-Dev., ich bin immer noch am lernen, aber das müsste doch zu lösen sein. Anbei meine Flashdatei.

    Danke euch schon mal

    funkymatti
    Angehängte Dateien Angehängte Dateien
     

  2. #2
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    1. die Zeile
    Code :
    1
    
    this._x + this.follow_mc._width + 20;
    ist keine gültige Zuweisung, sondern ein Ausdruck (es fehlt z.B. ein Gleichheitszeichen).

    2. Da die Position eines Clips nicht nur von der Position seines Nachfolgers abhängt, sorgst Du am besten in einer externen Funktion "reArrange" für das Anordnen der Clips.

    3. Du arbeitest anscheinend mit Flash 6 - dennoch solltest Du Dir angewöhnen, bei Bezeichnern auf Groß- und Kleinschreibung zu achten (Dein Film läuft z.B. unter Flash 7 und 8 nicht mehr, da Du u.a. "mc_Profil" mal mit großem und mal mit kleinem "P" geschrieben hast).

    4. Mit folgendem Code auf der Hauptzeitleiste sollte es klappen:
    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
    
    // Positionieren (Slide) und MC-Verfolgung
    movieclip.prototype.slideClip = function(pHoch, pRunter, pHFaktor, pRFaktor) {
        with (this) {
            if (signal == 1) {
                this._width += (pRunter - _width) / pHFaktor;
                this._height += (pRunter - _height) / pHFaktor;
            }
            if (signal == 0) {
                this._width += (pHoch - _width) / pRFaktor;
                this._height += (pHoch - _height) / pRFaktor;
            }
        }
        reArrange();
    }
     
    // Navigations Clip Inhalt
    movieclip.prototype.initClip = function(pClip, pTitel, pInhalt) {
        pClip.txtTitel = pTitel;
        pClip.txtInhalt = pInhalt;
        
        pClip.signal = 0;
     
        pClip.onRollOver = function() {
            this.signal = 1;
        }
        pClip.onRollOut = function() {
            this.signal = 0;
        }
    }
     
    // Clips neu positionieren:
    var clips = new Array(mc_Profil, mc_History, mc_Service, mc_Kontakt);
     
    function reArrange() {
        for (var i=1; i<clips.length; i++) {
            clips[i]._x = clips[i - 1]._x + clips[i - 1]._width + 20;
        }
    }
     
    // Navigations Clip Initialisieren
    initClip(mc_profil, "Profil", "Dies ist der Inhalt!");
    initClip(mc_History, "Hisstory", "Dies ist der Inhalt!");
    initClip(mc_Service, "Service", "Dies ist der Inhalt!");
    initClip(mc_Kontakt, "Kontakt", "Dies ist der Inhalt!");
     
    mc_Profil.onEnterFrame = function() {
        this.slideClip(80, 425, 3, 5, 0);
    }
     
    mc_History.onEnterFrame = function() {
        this.slideClip(80, 425, 3, 5);
    }
     
    mc_Service.onEnterFrame = function() {
        this.slideClip(80, 425, 3, 5);
    }
     
    mc_Kontakt.onEnterFrame = function() {
        this.slideClip(80, 425, 3, 5);
    }

    Deine Vorgehensweise ist übrigens in sofern suboptimal, als dass Du auf jedem einzelnen Clip die ganze Zeit eine onEnterFrame-Methode laufen hast. Performanter wäre es, wenn Du die onEnterFrame-Methode in der Funktion "slideClip" anlegen würdest, und letzte nur aufrufen würdest, wenn sich der Status eines Clips ändert.

    Gruß
    .
     

  3. #3
    funkymatti funkymatti ist offline Mitglied
    Registriert seit
    Oct 2006
    Beiträge
    15
    Hallo Tobias,
    vielen Dank für Deine Korrekturen und Deine Tips. Ich bin leider immer noch bei FlashMX hängen geblieben und habe mich nicht wirklich um die neuen Versionen gekümmert (ich setzte jetzt erst intensiv mit Flash auseinander). Werde in Zukunft auf die Groß-Kleinschreibung achten!

    Der Code funktioniert super es sieht besser aus, als ich mir das vorgestellt habe.

    Ich Danke Dir nochmals für Deine schnelle Hilfe

    Viele Grüße

    funkimatti
    Geändert von funkymatti (24.08.07 um 12:54 Uhr)
     

  4. #4
    funkymatti funkymatti ist offline Mitglied
    Registriert seit
    Oct 2006
    Beiträge
    15
    Hallo Tobias,

    ich hatte leider bisher keine Gelegenheit das Thema abzuschliessen. Ich steige leider bei Deinem Script immer noch nicht ganz durch. Ich hätte noch zwei Fragen:

    1.) wie kann ich anstatt die Filme zu entladen, bei "DragOut" vier andere Filme in die jeweiligen Pads laden? Dafür müsste ich eigentlich kein neues Array anlegen, oder?

    Code :
    1
    2
    
    pads[i].onRollOut = pads[i].onDragOut = function() {
            this.scaleTo(0, 4, reArrange, unloadImg, true);

    2.) Wie kommt es zu den weissen Rändern an den Pads? Ich finde kein AS in dem das deffiniert wird.
     

Ähnliche Themen

  1. lwjgl / rotation / follow camera / OpenGL
    Von hasta_jesaja im Forum Java
    Antworten: 1
    Letzter Beitrag: 03.07.08, 19:49
  2. Follow me
    Von derpfaff im Forum Bildbearbeitung & Illustration
    Antworten: 10
    Letzter Beitrag: 07.10.07, 13:17
  3. Follow the Lines
    Von c0heed im Forum Fotografie
    Antworten: 3
    Letzter Beitrag: 26.09.06, 12:02
  4. drag follow
    Von cris-the-best im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 07.02.06, 15:47
  5. Fehler: Element section content does not follow the DTD
    Von guckemal im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 12.04.05, 22:09