Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-02-2012, 09:44   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 7
Question Farbe eines Mc bei Mouseover über einen anderen mc ändern

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)
Rany ist offline   Mit Zitat antworten
Alt 06-02-2012, 21:14   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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)
hgseib ist offline   Mit Zitat antworten
Alt 07-02-2012, 12:45   #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.
Rany ist offline   Mit Zitat antworten
Alt 07-02-2012, 13:01   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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)
hgseib ist offline   Mit Zitat antworten
Alt 16-02-2012, 08:50   #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...
Rany ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3, children, verschachtelte movieclips

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele