Weitere MausInteraktion mit Objekten in Flash Teil1

Ziele des Teil1 dieses Tutorials:
- die graphics-Komponente von AS3
- weitere Interaktionen mit der Maus
...und los geht's:

Das Endergebniss, soll dann in etwa so aussehen:




Ziehe den Ball und lasse ihn dann los!

1) Wir starten so wie üblich: Wir erstellen in Flash eine neue .fla-Datei, speichern diese unter "BouncingBall.fla" ab und tragen als DokumentenKlasse die Klasse "BouncingBall" ein.

2) Der 2. Schritt ist auch wie üblich: Wir erstellen in FlashDevelop ein neues .as-Dokument und speichern dies unter "BouncingBall.as" ab.
Das Gerüst der BouncingBall-Klasse sollte so aussehen:
Code:
  1. package
  2. {
  3.         import flash.display.MovieClip;
  4.        
  5.         public class BouncingBall extends MovieClip
  6.         {
  7.                 public function BouncingBall()
  8.                 {
  9.                        
  10.                 }
  11.         }
  12. }
(wer die Struktur genauer erläutert haben möchte, der schaut am besten eines dieser beiden Tutorials an:
In 10min zur ersten Flash Applikation!
Interaktionen mit Flash

3) So, nun legen wir die BouncingBall.as erstmal zur Seite und erstellen eine weitere Klasse: 'Ball' und speichern diese unter 'Ball.as' ab.
Dies wird die Klasse für den blauen Ball, den wir oben durch die Gegend geworfen haben. Die Klasse müsste nun fast gleich aussehen, wie 'BouncingBall.as' nur, dass der KlassenName und die MainMethode 'Ball' heißen.
Die Klasse soll von MovieClip 'erben', da der Ball ein Objekt werden soll, das wir auf dem Bildschirm sehen.

4) Nun müssen wir erst einmal dafür sorgen den Ball auf dem Bildschirm sehen zu können. Dafür legen wir eine neue Methode 'draw()' an. (der Name ist beliebig, man könnte sie auch 'ballZeichnen()' nennen)
Nun zum interessanten Teil, hier werden wir die Befehle geben, den Ball zu zeichnen:
Code:
  1. graphics.clear(); // löscht den Bilschirm(nicht wirklich nötig)
  2. graphics.beginFill(0x6598FF, 1); // legt die Farbe und den Alpha-Wert fest
  3. graphics.drawCircle(7, 7, 14); // malt einen Kreis mit Radius:14 und Mittelpunkt:(7|7)
  4. graphics.endFill(); // beendet den Zeichenvorgang

Nun müssen wir bei der initialisierung der Klasse noch den Befehel der 'draw()'-Methode geben. Wenn wir das haben, dann sollte die Klasse etwa so aussehen:
Code:
  1. //Ball.as
  2. package
  3. {
  4.         import flash.display.MovieClip;
  5.        
  6.         public class Ball extends MovieClip
  7.         {
  8.                
  9.                 public function Ball()
  10.                 {
  11.                         draw();
  12.                 }
  13.                
  14.                 private function draw():void
  15.                 {
  16.                         // löscht den Bilschirm(nicht wirklich nötig)
  17.                         graphics.clear();
  18.                         // legt die Farbe und den Alpha-Wert fest
  19.                         graphics.beginFill(0x6598FF, 1);
  20.                         // malt einen Kreis mit Radius:14 und Mittelpunkt:(7|7)
  21.                         graphics.drawCircle(7, 7, 14);
  22.                         // beendet den Zeichenvorgang
  23.                         graphics.endFill();
  24.                 }
  25.         }
  26. }

So, als kleine Überprüfung, werden wir nun in der 'BouncingBall.as' einen 'Ball' erstellen um zu testen, ob dies klappt.
Also fügen wir in die MainMethode der 'BouncingBall.as' folgenden Zeilen ein:
Code:
  1. //BouncingBall.as
  2. var myBall:Ball = new Ball(); // erstellt ein neues 'Ball-Object'
  3. myBall.x = stage.stageWidth / 2; // den Ball in die horizontale Mitte setzen
  4. myBall.y = stage.stageHeight / 2; // den Ball in die vertikale Mitte setzen
  5. addChild(myBall); // fügt das 'Ball-Object' dem MovieClip hinzu

als kleine Kontrolle, die 'BouncingBall'-Klasse sollte nun ungefähr so aussehen:
Code:
  1. // BouncingBall.as
  2. package
  3. {
  4.         import flash.display.MovieClip;
  5.        
  6.         public class BouncingBall extends MovieClip
  7.         {
  8.                
  9.                 public function BouncingBall()
  10.                 {
  11.                         myBall = new Ball();
  12.                         myBall.x = stage.stageWidth / 2;
  13.                         myBall.y = stage.stageHeight / 2;
  14.                         addChild(myBall);
  15.                 }
  16.         }
  17. }
Nun Starten wir das MovieClip, wenn alles richtig läuft, dann sollte ein blauer Ball in der Mitte des Bildschirms erscheinen.
Wir können allerdings mit dem Ball nicht interagieren. Wie im Tutorial 'Interaktionen mit Flash' beschrieben wird, können wir Methoden definieren, die ,bei bestimmten Interaktionen mit Objekten, ausgeführt werden sollen. Also fügen wir dem Ball-Objekt zwei EventListener hinzu.
Code:
  1. this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
  2. this.addEventListener(MouseEvent.MOUSE_UP,     mouseUpHandler);
Übersetzt: Wenn die Maustaste gedrückt wird, soll die Methode 'mouseDownHandler' ausgeführt werden, und wenn die Maustaste losgelassen wird, soll die Methode 'mouseUpHandler' ausgeführt werden.
Die Methoden werden wir vorerst relativ Simpel halten, wir wollen damit nur in der Lage sein den Ball an eine andere Position zu schieben. Dafür verwenden wir die von AS3 vorgefertigten Methoden 'startDrag()' und 'stopDrag()':
Code:
  1. //Ball.as
  2. private function mouseDownHandler(e:MouseEvent):void
  3. {
  4.         this.startDrag();
  5. }
  6.  
  7. private function mouseUpHandler(e:MouseEvent):void
  8. {
  9.         this.stopDrag();
  10. }

Wenn wir nun unser MovieClip starten, dann haben wir einen Ball, den wir an jede beliebige andere Position ziehen können.
Das war der Teil 1 des 'BouncingBall'-Tutorials, in Teil 2 geht es dann darum den Ball 'weiter fliegen' zu lassen, wenn man die Maus los lässt.

Bei Fragen oder Anregungen zu dieser Seite, steht dir das Forum zur Verfügung.

Diese Seite wurde 1.091 mal angesehen.
Bewertung zu dieser Seite:
 
  72 Bewertungen

0 Kommentare zu diesem Thema

Du möchtest einen Kommentar abgeben?
Registriere dich oder melde dich mit deinem tbody-Konto an.