| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Feb 2010
Beiträge: 7
|
Hallo zusammen, Ziel des ganzen ist es, einem Land innerhalb einer Weltkarte einen Farbwechsel bei Mouseover zu verpassen. Über dem Land liegt aber noch ein Logo (mc). Das Land soll auch beim mouseover über das Logo grau werden, das Logo bekommt nur ein ROLL_OUT wenn es über die Landesgrenze hinaussteht. Nehmen wir als Beispiel mal Deutschland: MC1: deutschlandkarte_mc MC2: logo mein as dazu sieht so aus: europakarte.deutschlandkarte_mc.addEventListener(M ouseEvent.ROLL_OVER,over); europakarte.deutschlandkarte_mc.addEventListener(M ouseEvent.ROLL_OUT,out); function over(event:MouseEvent):void { event.currentTarget.transform.colorTransform = grau; } function out(event:MouseEvent):void { event.currentTarget.transform.colorTransform = blau; } var grau:ColorTransform = new ColorTransform(); grau.color = 0xE6EAEE; var blau:ColorTransform = new ColorTransform(); blau.color = 0x002F5C; europakarte.deutschlandkarte_mc.logo.addEventListe ner (MouseEvent.ROLL_OVER,landover); function landover(event:MouseEvent):void { event.currentTarget.child.transform.colorTransform = grau; }(???) Nachdem es ja noch einige Länder mehr als nur Deutschland mit dieser Funktion geben soll, wollte ich die Funktionen so schreiben, dass ich sie für jedes Land wieder verwenden kann, dazu muss ich aber die Elemente indirekt ansprechen (sonst hab ich Hunderte zeilen Code, für eigentlich immer die gleiche Funktion) und das funktioniert nicht so wie ich mir das gedacht hab. Das Logo ist denk ich aber am besten im mc "deutschlandkarte_mc" aufgehoben... Die graue Kontur der Länder sollte beim Mouseout auch wieder da sein, momentan geht sie verloren... geht das mit dem GlowFilter? Hoffe dass meine Beschreibung ist nicht allzu verwirrend ist und mir jemand helfen kann... Vielen Dank schon mal!!! Geändert von Rany (06-02-2012 um 13:26 Uhr) |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
vorschlag erstelle eine globale variable, in der das aktuell gehilitete land steht. erst wenn ein anderes land ein rollover erhält (ein logo ist kein land - ist eine andere klasse), dann erfolgt der farbumschlag. so ganz grob skizziert Code: static var aktuelles_land:Land;
function over(event:MouseEvent):void {
if ( event.currentTarget is Land)
{
if (event.currentTarget != aktuelles_land)
{
aktuelles_land.dehilite(); // z.b.
aktuelles_land = event.currentTarget;
aktuelles_land.hilite();
...
}
}
}
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (06-02-2012 um 21:18 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Feb 2010
Beiträge: 7
|
Danke für den Tip, werd ich mal ausprobieren. Aber wie sag ich dann einem Logo, dass das Land drunter grau werden soll? Also indirekt, so dass die Funktion auch für alle verwenden kann. Vorher hab ich halt direkt gesagt: karte_europa.logo_de.addEventListener(MouseEvent.R OLL_OVER, zeigeGrau1); function zeigeGrau1(a:MouseEvent):void { karte_europa.grau_de.alpha=0.5; } das nächste land dann Grau2 usw. Aber das waren zum Schluss über 30 Zeilen Code pro Land (ein Klick-Event gibts auch für's Logo, erscheint eine Adresse, dann noch die Funktionen für erscheinen und verbergen der Adresse und der grauen Fläche...), und insgesamt 1500 ![]() Viel zu viel halt. |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
wenn sich das logo innerhalb des landes befindet, dann wird das automatisch passieren: - rollover land - rollover logo == rollout land (wird aber nicht erkannt, weil kein land) wenn sich deine logos wo anders befinden, dann kannst du z.b. selbst ein event senden: das rollover des logos sendet dann z.b. karte_europa.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER)); bzw. wenn es ein karte_europa.logo_de... gibt, dann sollte das rollover-event automatisch auch zum land kommen (falls du das event nicht stoppst) bzw. z.b. parent.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER)); informationen wie landesnamen, land_mc, logo_mc usw. solltest du sowieso von der grafik und den anzeigenden programmen trennen. in z.b. einem array, dictionary, xml o.ä. als datenteil.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (07-02-2012 um 13:07 Uhr) |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Feb 2010
Beiträge: 7
|
Vielen Dank für deine Hilfe! :-) Hab es doch anders gemacht so dass es erstmal funktioniert, die codemenge ist immernoch zuviel aber das Projekt hat noch andere wichtige (komplizierte) Baustellen... :-( Kannst du mir ein gutes Buch zu ActionScript3 (am liebsten auf deutsch) empfehlen? Hab das "Praxisbuch ActionScript3 zu Flash CS4" von Galileo Design, aber damit stößt man ziemlich schnell an Grenzen... |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| as3, children, verschachtelte movieclips |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash CS3] Firefox läd MovieClip erst beim "sichten" ("onView") | elecdream | Flash Einsteiger | 3 | 13-03-2009 11:59 |
| var ["mc"+c+"_mc"]:MovieClip -> richtige Syntax? | topolina | ActionScript 2 | 8 | 20-06-2008 09:08 |
| "new MovieClip" über String ansprechen? | Felice303 | ActionScript 3 | 3 | 12-06-2007 16:08 |
| Tiefe von Movieclip-Instanzen - "reserved" und "focusManager"? | Apollo102 | Softwarearchitektur und Entwurfsmuster | 2 | 17-05-2005 22:25 |
| button eines movieclips steuern anderen movieclip""" | xnemox | Flash MX | 7 | 25-08-2003 13:32 |