Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-01-2012, 23:14   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 8
Farbe eines MovieClips übergeben

Hallo Leute!
Kurz zu meinen Problem: Nehmen wir an, Die Fläche Deutschland wäre ein MovieClip, innerhalb diesen sind die ganzen Bundesländer. Diese besitzen alle eine andere Farbe und der Instanzname ist wie der Realname. Wenn ich die Maus über ein Bundesland bewege, soll es eine andere Farbe annehmen (z.B. grau) und die alte Farbe wieder annehmen, wenn Mauszeiger sich nicht mehr auf die Fläche befindet!
Ich bin jetzt schon soweit gekommen, das sich die einzelnen mc's ("Bundesländer") grau färben, aber wie bekomme ich das hin, das sie die ursprüngliche Farbe wieder annehmen? Hab versucht sie zu übergeben, aber ein return wollte er nicht annehmen. Achja, ich arbeite mit mc's, nicht mit schaltflächen (weil rollOver irgendwie nicht funzte) ! Folgend mein Bsp.! Könnt ihr mir ein paar Tipps geben, Danke schonmal! :-)

PHP-Code:
mc_Karte.mc_bezirke.addEventListener(MouseEvent.MOUSE_OVERmouse_arrow_over);
mc_Karte.mc_bezirke.addEventListener(MouseEvent.MOUSE_OUTmouse_arrow_out);

function 
mouse_arrow_over(event:MouseEvent):void
{
    
Mouse.cursor="button";
    var 
color_trans:ColorTransform event.target.transform.colorTransform;
    
//var color_trans_alt:Color = new Color();
    //color_trans_alt=event.target.tintColor;
    
color_trans.color=0xCCCCCC;
    
//trace(color_trans_alt);
    
event.target.transform.colorTransform color_trans;
        
//return color_trans_alt;
}
function 
mouse_arrow_out(event:MouseEvent):void
{
    
Mouse.cursor="arrow";
    var 
color_trans:ColorTransform event.target.transform.colorTransform;
    
//color_trans.color=color_trans_alt;
    
event.target.transform.colorTransform color_trans;

// = funktioniert noch nicht bzw. AS-Fehler
geoinf ist offline   Mit Zitat antworten
Alt 09-01-2012, 09:31   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
eine möglichkeit, hinterlege deine originalfarben in einem objekt:

var laenderfarbe:Object ={}
laenderfarbe["hessen"] = 0xff0000;
laenderfarbe["hamburg"] = 0xff00ff;
...
color_trans.color = laenderfarbe[event.target.name]


oder schreibe von anfang an in jedem land-mc den farbwert in eine variable
mc_Karte.mc_bezirke.hessen.landesfarbe = 0xff0000;
..
color_trans.color = event.target.landesfarbe;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (09-01-2012 um 09:35 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 09-01-2012, 09:41   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zunächst mal hallo und willkommen im FlashForum!

Wenn Du ein ColorTransform rückgängig machen willst, musst Du einfach nur ein leeres ColorTransform-Object zuweisen:
ActionScript:
  1. DisplayObject(event.currentTarget).transform.colorTransform = new ColorTransform();
Um zu verhindern, dass man zufällig ein untergeordnetes Anzeigeobject erwischt, sollte man bei MouseEvents übrigens in der Regel currentTarget statt target verwenden!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (09-01-2012 um 09:43 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 09-01-2012, 10:31   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 8
Zitat:
PHP-Code:
DisplayObject(event.currentTarget).transform.colorTransform = new ColorTransform(); 
Um zu verhindern, dass man zufällig ein untergeordnetes Anzeigeobject erwischt, sollte man bei MouseEvents übrigens in der Regel currentTarget statt target verwenden!
Danke erstmal !!! Ihr seid super! :-)

@Martin: mit dem leeren ColorTransform-Object hats geklappt, allerdings mit event.target und nicht mit currentTarget. Nehm ich vorher auch schon currentTarget, klappt es ebenso wenig! Aber Danke für den Tipp.

Da ich in verschiedenen Foren schon nach Hinweisen gesucht habe und nichts wirklich gefunden , sollte ich vielleicht den endgültigen Code hier mal reinstellen???
geoinf ist offline   Mit Zitat antworten
Alt 09-01-2012, 10:56   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
mc_Karte.mc_bezirke.addEventListener
die länder sind untergeordnete objekte, somit target. currentTarget wäre hier: mc_bezirke

die anmerkung von Martin Kraft ist in soweit sinnvoll: falls 'hessen' aus mehreren objekten besteht, dann gehts halt auch schief. dann muss man testen: event.target.name == "hessen" oder z.b. event.target.parent == mc_Karte.mc_bezirke. notwendig aber unschön.
besser ist's wenn man oo-programmiert und ordentlich klassen erstellt, dann kann man testen z.b.: event.target is Land (wenn Land die klasse der länder ist)

beispiele sind immer gerne gesehen!
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (09-01-2012 um 10:59 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 09-01-2012, 10:59   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von geoinf Beitrag anzeigen
...allerdings mit event.target und nicht mit currentTarget. Nehm ich vorher auch schon currentTarget, klappt es ebenso wenig! Aber Danke für den Tipp.
Ich seh grade, das Du den Listener auf den Container legst und nicht auf die einzelnen Bundesländer. Dann musst Du natürlich mit target arbeiten, dabei aber aufpassen, dass Du unterhalb der Bundesländer keine AnzeigeObjekte mehr erzeugst. Bei MouseEvent.MOUSE_OVER würden nämlich dann diese eingefärbt....

Zitat:
Zitat von geoinf Beitrag anzeigen
Da ich in verschiedenen Foren schon nach Hinweisen gesucht habe und nichts wirklich gefunden , sollte ich vielleicht den endgültigen Code hier mal reinstellen???
Ja. Es ist immer gut, wenn andere die Lösung eines Problems nachlesen können...
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 09-01-2012, 13:28   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 8
Durch Mauszeiger Fläche Highlighten

PHP-Code:
mc_Karte.mc_bezirke.addEventListener(MouseEvent.MOUSE_OVERhighlight_on);
mc_Karte.mc_bezirke.addEventListener(MouseEvent.MOUSE_OUThighlight_out);

function 
highlight_on(event:MouseEvent):void
{
    
Mouse.cursor="button";
    var 
color_trans:ColorTransform event.target.transform.colorTransform;
    
color_trans.color=0xCCCCCC;
    
event.target.transform.colorTransform color_trans;

function 
highlight_out(event:MouseEvent):void
{
    
Mouse.cursor="arrow";
    
DisplayObject(event.target).transform.colorTransform = new ColorTransform();
    var 
color_trans:ColorTransform event.target.transform.colorTransform;
    
event.target.transform.colorTransform color_trans;

@Martin, hgseib: Genau das war ja u.a. auch mein Problem. Das 'Land' als MC (in meinen Bsp. mc_bezirke) ist der Container für die ganzen 'Bundesländer'. Einzeln ansprechen wäre viel zu umständlich und habe daher nach einer Lösung gesucht! Und die 'Bundesländer' sind selber KEINE Container!

Und danke nochmal! Werde in den nächsten Tagen u. Wochen weitere Beiträge/Fragen posten :-) ...natürlich würde ich dann auch immer die Lösungen (und auch selbst Hinweise/Codebsp. geben) dem Forum zukommen lassen!

Geändert von geoinf (09-01-2012 um 13:29 Uhr)
geoinf ist offline   Mit Zitat antworten
Alt 09-01-2012, 13:55   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von geoinf Beitrag anzeigen
Einzeln ansprechen wäre viel zu umständlich ...
Wieso, geht doch:
ActionScript:
  1. import flash.display.InteractiveObject;
  2. import flash.events.MouseEvent;
  3.  
  4. var interactiveObjects:Array = [];
  5. var interactiveObject:InteractiveObject;
  6.  
  7. var i:uint = numChildren;
  8. while(i--) {
  9.     interactiveObject = getChildAt(i) as InteractiveObject;
  10.     if (interactiveObject) {
  11.         interactiveObjects.push(interactiveObject);
  12.         interactiveObject.addEventListener(MouseEvent.MOUSE_OVER, handleOver);
  13.         interactiveObject.addEventListener(MouseEvent.MOUSE_OUT, handleOut);
  14.     }
  15. }
  16.  
  17. function handleOver(e:MouseEvent):void {
  18.     // Dein Bundesland:
  19.     var interactiveObject:InteractiveObject = InteractiveObject(e.currentTarget);   
  20. }
  21.  
  22. function handleOut(e:MouseEvent):void {
  23.     // Dein Bundesland:
  24.     var interactiveObject:InteractiveObject = InteractiveObject(e.currentTarget);   
  25. }
Zitat:
Zitat von geoinf Beitrag anzeigen
Und die 'Bundesländer' sind selber KEINE Container!
Wenn Du ihnen in der IDE einen Instanznamen geben konntest, müssen es ja MovieClips oder Sprites sein?! Und die können eben (wenn's z.B. beim Import aus Illustrator dumm läuft) auch Unterelemente enthalten...
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 10-01-2012, 12:03   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 8
Ok, so könnte es auch gehen, aber da finde ich meine Variante "Einfacher" :-)

Zitat:
Wenn Du ihnen in der IDE einen Instanznamen geben konntest, müssen es ja MovieClips oder Sprites sein?! Und die können eben (wenn's z.B. beim Import aus Illustrator dumm läuft) auch Unterelemente enthalten...
Ja, sind MC's ! Und ich habe schon vorher im Illustrator darauf geachtet, das es keine Unterlemente gibt! Beim Import nochmals überprüft!
geoinf ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
container, farbe, movieclip

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
Farbe eines MovieClips ändern themerx ActionScript 3 1 04-01-2009 11:51
Farbe eines Movieclips bzw. Bildes ermitteln kakktus ActionScript 2 2 25-10-2006 13:13
farbe eines movieclips mila_die_hexe Flash MX 2004 1 16-06-2005 16:23
Farbe eines MovieClips ändern alma ActionScript 1 2 31-05-2004 11:04


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele