tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
807
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    Hallo!

    Ich möchte gerne eine Buttonleiste erstellen, die sich bei jedem Link verfärbt.
    Angenommen bei "Home" ist die leiste blau, "Guestbook" grün, "Kontakt" rot ....

    Die leiste ist ein einfaches rechteck, welche unter den Text-Buttons liegt.

    Das Problem ist, wie springe ich zwischen den einzellnen Farben hin und her?...


    Hat jemand eine idee?


    danke
     

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

    wandele das Recheck in einen MovieClip um und gib ihm einen Instanznamen (z.B. background). Dann kannst Du die Farbe z.B. mit setRGB einstellen:
    PHP-Code:
    var myColor = new Color(background);

    button1.onPress = function() {
        
    myColor.setRGB(0xFF0000);
    }

    button2.onPress = function() {
        
    myColor.setRGB(0x00FF00);

    Gruß
    .
     

  3. #3
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    ok...

    nur hab ich da noch ein problem.... die farben sollten sich nicht schlagartig - sondern animiert verändern....

    kann man das irgendwie noch einbauen?
     

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

    geht auch. Ich habe mal ein Beispiel dazu hochgeladen.

    Gruß

    P.S.: Netiquette nicht vergessen!
    .
    Angehängte Dateien Angehängte Dateien
     

  5. #5
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    PERFEKT!

    Genau sowas suche ich...

    nur möcht ich den script auch irgendwie verstehen (obwohl ich fast 0 ahnung in action script habe...)

    ich hab mal den code hier kopiert..

    Code :
    1
    2
    3
    4
    5
    6
    
    var cl = new Color(leiste);
    var tr = new Object();
    tr.rb = tr.gb=tr.bb=0;
    dr = 0;
    dg = 0;
    db = 0;
    was heißt das "dr, dg, db" ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    function fadeTo(r, g, b) {
        dr = r;
        dg = g;
        db = b;
        this.onEnterFrame = function() {
            tr.rb += (dr-tr.rb)/10;
            tr.gb += (dg-tr.gb)/10;
            tr.bb += (db-tr.bb)/10;
            cl.setTransform(tr);
            if (Math.abs(dr-tr.rb)+Math.abs(dg-tr.gb)+Math.abs(db-tr.bb)<3) {
                tr.rb = dr;
                tr.gb = dg;
                tr.bb = db;
                cl.setTransform(tr);
                delete this.onEnterFrame;
            }
        };
    }
    Kann man hier irgendwo die Übergangsgeschwindigkeit einstellen?


    Vielen DANK!

    christian
     

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

    rb, gb und bb sind die Offseteigenschaften des Transform-Objektes für das Color-Objekt. Schau mal in der Hilfe nach "Color-Klasse" und "Color.setTransform".

    Man kann auch mit ra, ga und ba arbeiten, aber ich bevorzuge die relative Änderung über den Offset (ist natürlich auch abhängig von den Anforderungen).

    Die Geschwindigkeit änderst Du, indem Du in diesen Zeilen:
    PHP-Code:
    tr.rb += (dr-tr.rb)/10;
    tr.gb += (dg-tr.gb)/10;
    tr.bb += (db-tr.bb)/10
    die 10 gegen andere Zahlen austauschst. Grössere Zahlen = langsamer.

    Erklärung dafür: Ich messe den "Abstand" zwischen meinem Zielwert und dem aktuellen Wert und addiere bei jedem Frameaufruf einen Teil dieses Abstandes zu meinem Wert. Mit 10 würde ich mich z.B. jeden Frameaufruf um 10% meiner Zielfarbe nähern.

    Gruß
    .
     

  7. #7
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    ahh...

    ok - das versteh ich.....


    jetzt wirds noch ein bisschen schwerer...
    ich möchte, dass sich verschiedene animationen (movieclips) beim click auf einen Button abspielen....

    brauch ich da auch wieder einen speziellen code?


    thx.
     

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

    hmm, diese Aussage ist ziemlich vage. Was genau soll geschehen: auf der Bühne befindliche MovieClips ein/ausgeblendet und/oder abgespielt werden, Clips aus der Bibliothek instanzieren, externe SWF-Dateien einladen und anzeigen?

    Erkläre bitte noch einmal genauer, wie Du Dir das vorstellst, Dann können wir Dir sicher weiterhelfen.

    Gruß
    .
     

  9. #9
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    ich habe mal einen screenshot angehängt.


    hier ist die veränderte buttonleiste.
    Ober dieser Leiste sollte eine Animation abgespielt werden (ein movieclip).

    Wenn man z.B auf "Photos" klickt - spielt sich eine animation mit text und bild ab...
    klickt man auf einen anderen button - so kommt wieder eine eigene animation, sodass bei jedem Thema ein eigenes Bild zugeordnet wird.

    Das Bild sollte wiederum nicht schlagartig, sondern eingeblendet erscheinen - doch das hab ich schon im movieclip mit einem Bewegungstween geregelt....

    den movieclip kann ich auch auf die bühne legen, oder auch nur in der Bibliothek lassen...



    danke nochmal!
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Buttonleiste die sich verfärbt-unbenannt-1.jpg  
     

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

    hmm, wo ist dann da das Problem? Ich nehme an, Du weisst, wie man mit onRelease/onPress auf ein Mausereignis erstellt und auch, wie man MovieClips einblendet (_visible-Eigenschaft) bzw. aus der Bibliothek instanziert (attachMovie). Bitte erklär, wo genau Du nicht weiterkommst. Liegt es an der Syntax, oder daran, dass Du auf das Ausfaden eines Clips warten willst, bevor Du den nächsten einblendest?

    Wenn Du das Ein- und Ausfaden über Tweening geregelt hast, leg doch einfach alle Clips übereinander und sag auf den Buttons z.B. so etwas:
    PHP-Code:
    on(release) {
        
    _parent.clip1.fadeIn();
        for (var 
    i=2i<=_parent.clip_anzahli++) {
            
    _parent["clip" i].fadeOut();
        }

    und den Clips verpasst Du die Funktionen fadeIn und FadeOut, die nichts weiter machen, als zu den entsprechenden Frames zu springen.

    Gruß
    .
     

  11. #11
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    hmm...
    also - ich weiß nicht - entweder bin ich wirklich zu dumm dafür - oder die einjährige flashpause war nicht gut...

    ich habe mir gedacht, dass ich alle animationen mit eigener ebene unter die Ebene "Leiste" lege, indem ich einen movieclip auf die Ebene platziere, welche die animation enthält.... und wenn dann auf den button geklickt wird, "spiel movieclip "pink" auf ebene "pink" ab"....

    natürlich funktioniert nie was wie man es sich vorstellt....



    also... für button 1:

    Movieclip "Blue" liegt auf Ebene "Blue". Instanzname "Blue"
    Code am dazugehörigen Button:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    on (rollOver) {
        _parent.fadeTo(51, 102, 153);
    }
     on(press) { 
    _parent.clip1.fadeIn(); 
    for (var i=2; i<=_parent.clip_anzahl; i++) { 
    _parent["Blue" + i].fadeOut(); 
    } 
    }

    Im Movieclip liegt eine Animation mit 15 Bildern - welche das Bild einblendet.
    Damit das Bild nicht gleich eingeblendet wird, ist beim 1. Bild der Ebene "Blue" ein "stop();"

    Eine Fehlermeldung gibts von Flash auch noch:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    **Fehler** Szene=Szene 1, Ebene=buttons, Bild=1:Zeile 5: Syntaxfehler.
         _parent.clip1.fadeIn(); 
     
    **Fehler** Szene=Szene 1, Ebene=buttons, Bild=1:Zeile 6: Syntaxfehler.
         for (var i=2; i<=_parent.clip_anzahl; i++) { 
     
    **Fehler** Szene=Szene 1, Ebene=buttons, Bild=1:Zeile 5: Syntaxfehler.
         _parent.clip1.fadeIn(); 
     
    **Fehler** Szene=Szene 1, Ebene=buttons, Bild=1:Zeile 6: Syntaxfehler.
         for (var i=2; i<=_parent.clip_anzahl; i++) { 
     
    Anzahl der ActionScript-Fehler: 4    Gemeldete Fehler: 4

    danke....
     

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

    ich muss gestehen, ich verstehe noch nicht ganz, wie Du Dir das vorstellst - mein Beispiel war auch keinesfalls zum Kopieren gedacht, sondern nur als generell Anregung, wenn Deine Struktur entsprechend aufgebaut ist.

    Diesse Syntaxfehler erhältst Du übrigens, wenn Du Code per Copy&Paste aus dem Forum in den AS-Editor kopierst; tipp es per Hand ab, und es gibt keine Fehler mehr.

    Im Anhang findest Du meine "Standardanwort" auf die Frage, wie man MovieClips auf Knopfdruck gegeneinander blendet. (Inzwischen geht es schneller, die einzutippen, als nach alten Threads zu suchen, in denen ich ähnliches gepostet habe ).

    Gruß
    .
    Angehängte Dateien Angehängte Dateien
     

  13. #13
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    danke... jetzt hab ich alles...

    ich muss gestehen, ich verstehe noch nicht ganz, wie Du Dir das vorstellst - mein Beispiel war auch keinesfalls zum Kopieren gedacht, sondern nur als generell Anregung, wenn Deine Struktur entsprechend aufgebaut ist.
    du musst verstehen, dass für mich actionscript japanisch ist - ich hab damit nie mehr als gaaanz simple sachen gemacht, und habe es auch noch nicht vor....

    vielen dank für deine hilfe...!
     

  14. #14
    Registriert seit
    Jan 2002
    Ort
    Altenmarkt Zauchensee, Austria
    Beiträge
    263
    bin zufällig noch auf was draufgekommen:

    wenn die ausgangsleiste nicht schwarz ist - dann funktioniert das auch alles nicht ganz so wie es sein sollte...

    da ich eine graue leiste brauche habe ich versucht fade mit "on clip event ...." gleich beim betreten des filmes die leiste umzufärben...
    irgendwie geht das nicht so...

    kann man das sonst irgenwie machen?


    danke
     

  15. #15
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    hmm....

    1.) ich versteh' die Frage nicht, ehrlich gesagt.

    2.) Bitte Netiquette beachten (Groß- und Kleinschreibung)!

    Gruß
    .
     

Ähnliche Themen

  1. Lüfter dreht sich langsam und nichts tut sich!
    Von Silver43 im Forum Hardware
    Antworten: 0
    Letzter Beitrag: 27.12.10, 21:14
  2. Antworten: 1
    Letzter Beitrag: 12.02.10, 13:12
  3. link, der sich bei hover langsam verfärbt
    Von Precog im Forum Javascript & Ajax
    Antworten: 12
    Letzter Beitrag: 05.10.02, 11:15
  4. Antworten: 4
    Letzter Beitrag: 18.09.01, 18:14