MC_Button: Linienfarbe ändern [Flash 10]
| 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 | |
| | 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? | | | 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' | | | 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 | | | 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' | | | 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) | | | 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' | | | 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 | |
| Ähnliche Beiträge zum Thema | 29.09.2019 - Dunraven 08.11.2020 - Rrxxqg 08.11.2020 - Rrxxqg 15.04.2021 - hansi24 |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|