Maus-Zeiger

Für ein Projekt programmiere ich derzeit mit ActionScript 3 und verwende dabei diverse Components der fl.controls Bibliothek. Nun wollte Ich einen Button verwenden. Dieser funktioniert auch wunderbar. Allerdings erscheint nur der gewöhnliche Arrow Mauszeiger bei einem MouseOver. Ich möchte aber den schönen Pointer Mauszeiger wie rechts im Bild bei einer Bewegung über den Button als Mauszeiger haben.

Ich habe eine Lösung gefunden. Zunächst einmal :

  1. Neuen MovieClip erstellen.
    - Quadrat ziehen. Makieren und F8 drücken. Der Name ist beliebig (z.B. “butTest“).
  2. MovieClip Ebene öffnen und aus dem Komponenten-Fenster (Strg+F7) einen Button auf die Fläche ziehen.

Nun kann es losgehen. Als nächstes schreiben wir eine Klasse für den Button. Meine Klasse heißt hier butSearch.

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
package
{
  import fl.controls.Button;
  import flash.display.MovieClip
  import flash.events.MouseEvent;
  import flash.ui.Mouse;
  import flash.display.DisplayObject;
  /**
   * ...
   * @author Jaeckel
   */
  public class butSearch extends Button
  {
    public function butSearch():void {
      // Labelname in dem der Text steht
      label = "suche";
      this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler );
      this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
      this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler );
      buttonMode = true;
      this.mouseChildren = false;
    }
 
    private function mouseDownHandler(event:MouseEvent):void {
      // execution
      label = "clicked";
    }
 
    private function mouseOverHandler(event:MouseEvent):void {
      this.useHandCursor = true;
      label = "hover";
    }
 
    private function mouseOutHandler( event:MouseEvent ):void {
      this.useHandCursor = false;
      label = "out";
    }
 
   }
}

Im Prinzip völlig simpel. Im Default-Konstruktor werden zuerst die EventHandler registriert. Bei passenden Events werden dann die Funktionen ausgeführt. Dann wird der buttonMode auf True gesetzt. MouseChildren ist erstmal auf false gesetzt. Wollt ihr aus der Klasse eine Klasse machen die von MovieClip erbt und mehrere Elemente beinhaltet, kann man die Funktion auf seine “Kinder” weiterleiten. Der Rest ist selbsterklärend.

Ich weiß nicht genau wie es in AS3 ist, aber der Titel der Klasse muss in AS2 immer gleich des Dateinamens sein. Also speichere ich die Datei unter dem Titel butSearch.as in meinem Projektverzeichnis ab.

Zuletzt muss nur noch unser Button mit der Klasse verbunden werden.

  1. Biblithek nach dem Button durchsuchen
  2. Rechtsklick -> Verknüpfung -> Klasse : butSearch

Voila! Fertig!

Links

http://www.thejaeck.net/2009/05/27/flash-button-component-mauszeiger-auf-pointer-setzen/trackback/