Flashhilfe.de - Flash Community

MC_Button: Linienfarbe ändern [Flash 10]

 


AntwortenRegistrieren Seite1  

xenos09#1
Benutzerbild von xenos09
Beiträge: 5
Registriert: Mar 2011

13.03.2011, 05:12

Werte Community,

hab mir in Illustrator eine Landkarte gebastelt, die ich nun in Flash interaktiv machen möchte. Im Grunde geht es darum, dass man auf ein Bundesland klickt in danach in einem dynamischen Textfeld diverse Infos zu diesem Bundesland angezeigt bekommt. Hab zu diesem Zweck ein schönes Snippet gefunden, so dass die dynamische Textanzeige kein Problem ist. Hab nun das Skript dahingehend ergänzt, dass sich jedes Bundesland bei MouseOver farblich hervorhebt und bei MouseOut wieder in der ursprünglichen Farbe erscheint, was im Grunde funktioniert. Bei diesem Farbwechsel stellt sich jedoch der unerwünschte Nebeneffekt ein, dass die Linienfarben (also die Randlinie eines Polygons, in Illustrator "stroke") nicht berücksicht werden. Meine Frage wäre nun, wie ich die Linien direkt ansprechen kann? Ist "lineStyle" das richtige Stichwort? Stelle hier mal das gesamte Skript rein, vlt. kann sich das mal jemand ansehen bzw. meine Weitersuche auf die richtige Fährte lenken?

lg

Xenos

ActionScript:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// ButtonMode aktivieren
btn1_mc.buttonMode = true;
btn2_mc.buttonMode = true;

// Klick-Listener auf die Buttons legen
btn1_mc.addEventListener(MouseEvent.CLICK,btnClick);

btn1_mc.addEventListener(MouseEvent.MOUSE_OVER,btnOver);
btn1_mc.addEventListener(MouseEvent.MOUSE_UP,btnClick);
btn1_mc.addEventListener(MouseEvent.MOUSE_OUT,btnOut);

btn2_mc.addEventListener(MouseEvent.MOUSE_OVER,btnOver);
btn2_mc.addEventListener(MouseEvent.MOUSE_UP,btnClick);
btn2_mc.addEventListener(MouseEvent.MOUSE_OUT,btnOut);

// Function für das MouseUP
function btnClick(evt:MouseEvent):void
{
     // Var deklaration
   var txtFile:String = '';
     // Fallunterscheidung für die jeweilige Datei
   switch(evt.target.name)
     {
        case 'btn1_mc': txtFile = 'datei1.txt'; break;
        case 'btn2_mc': txtFile = 'datei2.txt'; break;
     }
     // URLRequest für die Textdatei
   var myRequest:URLRequest = new URLRequest(txtFile);
     var myLoader:URLLoader = new URLLoader();
     // Listener für fertig geladen
   myLoader.addEventListener(Event.COMPLETE, completeHandler);
     myLoader.load(myRequest);
}

// Function für MouseOVER
function restoreObject(event:MouseEvent):void {
      event.target.alpha = 0.5;
}

function btnOver(evt:MouseEvent):void
{
        // Var deklaration
   var newColor:ColorTransform = evt.target.transform.colorTransform;
     // Fallunterscheidung für die jeweilige Datei
   switch(evt.target.name)
     {
        case 'btn1_mc': newColor.color = 0xCC6600;
        case 'btn1_mc': evt.target.transform.colorTransform = newColor; break;
        case 'btn2_mc': newColor.color = 0xCC6600;
        case 'btn2_mc': evt.target.transform.colorTransform = newColor; break;
     }
}

// Function für MouseOUT
function btnOut(evt:MouseEvent):void
{
     // Var deklaration
   var newColor:ColorTransform = evt.target.transform.colorTransform;
     // Fallunterscheidung für die jeweilige Datei
   switch(evt.target.name)
     {
        case 'btn1_mc': newColor.color = 0x333333;       
        case 'btn1_mc': evt.target.transform.colorTransform = newColor; break;
        case 'btn2_mc': newColor.color = 0x333333;
        case 'btn2_mc': evt.target.transform.colorTransform = newColor; break;
     }
}

// Function für fertig geladene Datei
function completeHandler(evt:Event):void
{
     // Loader auf das das Event target legen
   var myLoader2:URLLoader = URLLoader(evt.target);
     // Variabeln einlesen
   var myContent:URLVariables = new URLVariables(myLoader2.data);
     // Dyn. Textfeld füllen
   my_txt.htmlText = myContent.my_Text;
}
Geändert von xenos09 am 13.03.11 um 08:02 Uhr
xenos09#2
Benutzerbild von xenos09
Beiträge: 5
Registriert: Mar 2011

Themenautor/in

14.03.2011, 18:14

Hab das Problem mal unelegant entschärft, in dem ich mir ein gif der Landkarte unter die mc-button - Layers gelegt und bei den Button selbst dann den Alphawert verändert habe, so dass im Falle eines MouseOUT (alpha = 0.0) jeweils die darunter liegende Karte (samt Randlinien) zum Vorschein kommt.

Wie man die Linieneigenschaften aber direkt über AS verändern kann, tätete mich trotzdem noch immer interessieren tun! Was meint ihr?
Sleepingbeast#3
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

14.03.2011, 18:55

Hallo,

ich habe in diese Richtung auch mal ein Tutorial gefunden. Vielleicht hilfts dir weiter.
http://www.cix-blog.de/thm/Vektor-Deutschlandkarte-mit-ROLL_OVER

Liebe Grüße
Patrick
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
xenos09#4
Benutzerbild von xenos09
Beiträge: 5
Registriert: Mar 2011

Themenautor/in

14.03.2011, 19:09

Hi Patrick,

zunächst herzlichen Dank für den Link - ist ein schönes Beispiel, das mir für ein anderes Problem sehr gelegen kommt.

Soweit ich das .as gesehen habe, arbeitet die Karte allerdings auch mit variierenden alpha-Werten, meine ursprünglich Frage nach den Linieneigenschaften steht also noch zur Diskussion ;-)

Trotzdem nochmals Danke für den Link & liebe Grüße,

X
Sleepingbeast#5
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

14.03.2011, 19:32

gern geschehen,

aber scheint ja tatsächlich bei deinem aktuellen Problem nicht weiterzuhelfen.

In welcher Form liegen denn die einzelnen Bundesländer in deinem Flashfilm vor? Als einzelne MovieClips mit Instanznamen?
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
xenos09#6
Benutzerbild von xenos09
Beiträge: 5
Registriert: Mar 2011

Themenautor/in

14.03.2011, 19:39

ja genau - jedes bundesland eine instanz; einstweilen hab ich erst zwei gesetzt namens "btn1_mc" und "btn2_mc" (siehe Skript oben)
Sleepingbeast#7
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

14.03.2011, 19:55

du hast meines Erachtens zwei Möglichkeiten. Die eine hast du prinzipiell ja schon angewandt. Die colorTransform-Methode. Nur hast du ja scheinbar das Problem, dass sich sowohl die Füllfarbe als auch die Randfarbe ändern. Das ist aber "normal", da sich in dem Fall sowohl die Füllung als auch der Rand innerhalb eines MovieClips befinden. Du müsstest also Füllung und Rand in jeweils separate MovieClips packen und diese mit Instanznamen versehen. Dann kannst du auch beide unabhängig voneinander ansprechen und mit colorTransform umfärben.
So könnten deine MovieClips dann etwa wie folgt verschachtelt sein:

- bundesland1_mc
    - rand_mc
    - fuellung_mc

- bundesland2_mc
    - rand_mc
    - fuellung_mc

- bundeslandX_mc
    - rand_mc
    - fuellung_mc

usw.

Die zweite Möglichkeit, wäre statt des eigentlichen Randes einen GlowFilter zweckzuentfremden. So dass der Filter statt des Glühens lediglich eine Kontur erzeugt, die du dann nach belieben umfärben kannst.
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
xenos09#8
Benutzerbild von xenos09
Beiträge: 5
Registriert: Mar 2011

Themenautor/in

14.03.2011, 20:13

Ausgezeichnet - ich denke, dass beantwortet meine Frage, da ich ursprünglich der Meinung/Hoffnung war, auch innerhalb eines mc noch Füllung und Linie seperat ansprechen zu können.

Von Deinen beiden Vorschlägen kommt für das genannte Projekt wohl nur mehr der zweite in Frage. Es handelt sich nämlich genau genommen nicht im Bundesländer, sondern um 125 Verwaltungseinheiten und wen ich diese Lösung vorher gekannt hätte, hätte ich wohl schon mein Illustrator-File anders aufgebaut. Das mit dem Glow schau ich mir bei Gelegenheit an, das scheint mir realistischer einzubauen.

Einstweilen bin ich aber schon beim nächsten Problem angelangt, möchte nämlich, dass jedes Bundesland, das ausgewählt wurde, so lange seine Einfärbung behält, bis ein anderes Bundesland ausgewählt wurde und nicht schon beim nächsten MouseOUT in die Ausgangsfarbe zurückgekehrt. Zu dem Problem hab ich einen anderen Forumseintrag gesehen, den ich mir mal genauer anschauen möchte (http://www.flashhilfe.de/forum/actionscript-3-0/button-highlighten-bis-anderer-beruehrt-270886-270886.html#271199). Insofern würde ich dazu ggf. bei Bedarf einen neuen Thread öffnen, aber falls Dir spontan noch ein Tip dazu einfällt, sag ich natürlich nicht nein ;-)

besten Dank jedenfalls für die Beantwortung der Frage,

X

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de