Button maskieren ?

Jedimaster

Mitglied
Hallo,

ich habe in meiner Bühne einige Buttons, welche jedoch von anderen Symbolen die darüber liegen teilweise verdeckt werden.

Nun möchte ich aber, dass wirklich nur der sichtbare Teil der Buttons anklickbar ist, und nicht wie momentan auch der verdeckte Bereich.

Ganz konkret also- wie kann ich diese Buttons nicht nur für Sichtbarekeit, sondern auch für die Klickfunktion maskieren?

Gruß,
JediMaster
 
Hi,

mit der Eigenschaft "movieClip.hitArea" kannst Du den aktiven Bereich eines MCs (zumindest, sofern Dein Button ein MC-Objekt ist) festlegen. Dazu benötigst Du einen zweiten, unsichtbaren MC, der den sichtbaren Bereich des Buttons maskiert. Nachteil: Du musst wissen, welche Bereiche des Buttons im Moment sichtbar sind. Bei komplexeren Überschneidungen (die sich z.B. dynamisch ändern) bietet sich diese Methode nicht ohne weiteres an.

Gruß
 
Hi,

bei einfacheren Filmen ohne viel AS bietet sich die Möglichkeit, den aktiven Bereich des Buttons direkt im Editorfenster des Buttons zu definieren.
Wenn du einen Rechtsklick auf deinen Button machst, und 'an Postition editieren' wählst, dann erscheint ja die Button 'Time'line mit ihren 4 Zuständen.
4 Zustände...? Es gibt doch nur 3 !
Ja genau, der 4. Zustandsframe ist mit Aktiv benannt, und dieser stellt auch keinen Zustand dar, sondern die Fläche, die 'aktiv' auf MouseEvents reagiert - bleibt dieses Frame leer reagiert der Button auf alles innerhalb der Fläche, die in irgendeinem der 3 Zustände mit irgendeinem Objekt gefüllt ist, wenn du hingegen mit einer einfachen Füllung im Aktiv - Frame einen Bereich definierst, so reagiert der Button nur auf Events in diesem Bereich.


Grüsse
B
 
Hey,

vielen Dank für die tollen Tipps!
Jetzt weiß ich endlich wozu der 4. Zustand da ist :)

Aber, vielleicht noch eine kurze off-topic-Frage dazu:

Kann ich eventuell (ähnlich wie in Photoshop bzw. Imageready) einen Zustand wie "selected" erzeugen? Ich vermute das ganz lässt sich nur per AS lösen, indem nach einem Mausklick einfach der Button mit einer "Selected-Grafik" überlagert bzw. durch eine ersetzt wird o.ä, richtig?

Schönes Wochenende Euch allen!
Gruß,
JM
 
Joa,

das geht nur mit AS und einer Variable, die du zB auf true setzt, wenn der Button eben gedrückt wurde - wenn du mehrere Buttons hast, bietet sich ein onEnterFrame Event an, und eine Variable die mehrere Zustände annehmen kann. so das du immer aktuell einen Button mit dem entsprechenden Aussehen 'versorgen' kannst....

Jo schönes weekend...

B
 
Hi,

man kann Buttons auch prima aus MovieClips anfertigen, wobei sich weitere nette Möglichkeiten bieten. Das erfordert zwar etwas mehr AS, im Endeffekt kannst Du aber beliebig viele Stati (<- wie geht die Mehrzahl von Status?:-) Staten? ), rollOver und -Out - Animationen uvm. implementieren.

Ein Beispiel findest Du hier (ist leider relativ umständlich, da aus meiner Flash-Anfangszeit), oder im Forum mit den Suchbergiffen "MovieClip" und "Schaltflächen".

Gruß

EDIT II:
@Basileus: hmm. wenn ich die Frage richtig verstanden habe, bietet sich ein onEnterFrame-Handler nicht unbedingt an (der frisst ja auch Ressourcen). Es genügt (z.B. einer Menüleiste) eine globale Variable oder sinnvoll benannte Buttons, die sich untereinander austauschen können:
PHP:
on (Release) {
  eval("_parent.button"+_parent.activeBut).deactivate();
  this.activate();
}
oder mit lokalen Variablen (Script im Objekt):
PHP:
function activate() {
  for (i=1; i<=_parent.button_amount; i++) {
    if (eval("_parent.button"+i).isactive) {
        eval("_parent.button"+i).deactivate();
    }
  }
  // Hier die Aktionen zum grafischen Aktivieren des Buttons
  this.isactive=true;
}
 
Na ja,

ich hab meisstens EINEN onEnterFrame Event für ALLES was in der Navigation und der Struktur passiert - und das kann ja eine Menge sein....
So richtig Ressourcen fressend sind eigentlich nur AS-Alpha Tweens und Form Tweens oder am besten noch beides zusammen...oder auch createEmptyMovieClip / AttachMovieClip (so ab 30, 40....)
Ansonsten kannst du auf ´ner 300Mhz Gurke locker 30 onEnterFrame Events laufen lassen, wenn die die Bildschirmausgabe nicht permanent aktualisieren.

Grüsse
B
 
Ok, es hängt hauptsächlich davon ab, was in einem onEnterFrame so alles passiert. Nicht, dass ich die Dinger nicht auch häufig genug einsetzen würde (z.B. für die Animation der Schaltflächen) - aber die meisten Buttons bekommen bei mir die standart-Mausereignisse verpasst.
[OffTopic]
Letztens hatte ich ein Raster aus 2000 Quasi-Buttons, auf denen ich (ähnlich einer Bildschirmlupe) mit der Maus zeichnen wollte. Aus irgendeinem Grunde wollte onDragOver/-Out bei den (dynamisch generierten) Buttons nicht funktionieren, und rollOver bei gedrückter Maustaste kann man vergessen - ein Kollisionstest für alle 2000 mit onEnterFrame war leistungsmäßig absolut an der Kante:-) so habe ich mir mit einer "Paint"-Taste und rollOver geholfen...
[/OffTopic]

Gruß
 
Zurück