Tag: Code

Bildergalerie im Laufband

Ich habe noch mal das Projekt http://www.flashdevelop.de/actionscript-3/bilder-links-rechts-scrollen.html aufgegriffen. Diese Bildergalerie lädt zunächst alle Vorschaubilder und nach Anfrage erst die Originalbilder. Das aneinandergereihten Bilder werden mit der Maus bewegt, je näher die Maus an den Rand kommt, desto schneller bewegt sich das Band.

Die Bilder werden über eine XML-Datei geladen, die Vorschaubilder (Thumbnails) müssen gleich der großen Bilder lauten, mit _T. Das heißt, wenn das große bild img_001.jpg heißt, so muss die Vorschau img_oo1_T.jpg heißen.

Die Projektdateien gibt es am Ende des Artikels.
Die zip Datei enthält, aus Platzgründen,  nur die Vorschaubilder.

The Flash plugin is required to view this object.

weiterlesen… »

Objekt in Richtung eines Punktes bewegen

Hier zeige ich eine Möglichkeit, wie ein Objekt in Richtung eines vorgegebenen Punktes fährt.  Das Objekt soll sich immer langsamer an den Punkt annähern. Dies erreichen wir, in dem wir die Distanz vom Objekt zum Ziel ermitteln und mit einem Faktor (xSpeed, ySpeed) mulitpliziren. Den so ermittelten Wert können wir ganz einfach zu der aktuellen Position des Objektes addieren.  Um der ganzen Bewegung ein Ende zu geben, brechen wir mit einem vorgegebenen Kleinstwert (xTeminate, yTerminate) ab.

The Flash plugin is required to view this object.

weiterlesen… »

Mehrere Parameter übergeben

Möchte man einer Funktion mehrere Parameter übergeben, die von Haus aus weniger erwartet, so muss man folgender maßen vorgehen.

Zunächst benötigen wir eine funtion, die wir create nennen, die eine variable Anzhal an Parametern annehmen kann.

public static function create(method:Function, ... args):Function {
         return function(event:Event):void{
            method.apply(null, [event].concat(args));

Nun könnte man dies benutzen, um einem Event mehrere Parameter zu Übergeben, als nur das eigene Event. weiterlesen… »

Winkel und Geschwindikeit auf x y umrechnen

Hat man einen Winkel (angle) und eine Geschwindigkeit (speed) und möchte gerne die Verschiebung auf x und y haben, so kann dies mit Sinus und Kosinus berechnet werden.

var vx:Number = speed * Math.cos(angle);
var vy:Number = speed * Math.sin(angle);

sprite.x += vx;
sprite.y += vy;

Hex nach RGB oder RGB nach Hex und Alpha

Manchmal ist es notwendig einen Hexadezimalwert in RGB Aufzugsplitten.

var red:int   = color >> 16;
var green:int = color >> 8 & 0xFF;
var blue:int  = color & 0xFF;

Die Umkehrung würde dann folgendermaßen aussehen

var color:int = red << 16 | green << 8 | blue;

Hat man zusätzlich einen vorrangestellten Alphawert, schiebt man Alpha 24mal nach rechts. Diesen bekommt man zum Beispiel aus der BitmapData::getPixel32

var alpha:int = color >> 24;
var red:int   = color >> 16 & 0xFF;
var green:int = color >> 8 & 0xFF;
var blue:int  = color & 0xFF;

//---
var color:int = alpha << 24 | red << 16 | green << 8 | blue;

MovieClip rotieren in Richtung eines Punktes

So kann ein MovieClip in Richtung eines Punktes. Das folgende Beispiel dreht ein MovieClip in Richtung des Mauszeigers.

var dx:Number = mausX - derMovieClip.x;
var dy:Number = mausY - derMovieClip.y;
derMovieClip.rotation = Math.atan2(dy, dx) * 180 / Math.PI;

Zu beachten ist, dass Math.atan2 den Wert in Radiant ausgibt und .rotation erwartet den Winkel in Grad.  Hier ist ein Beispiel, wie Radiant in Grad und umgekehrt umgerechnet wird.
Dreht einen MovieClip in Richtung der Maus.
Projektdateien

Distanz zwischen zwei Punkten berechnen

So berechnet man eine Distanz zwischen zwei Punkten. P1 (x1/y1) und P2 (x2/y2) könnten zum Beispiel Positionen der Maus und einem MovieClip sein.

var dx:Number = x2 - x1;
var dy:Number = y2 - y1;
var dis:Number = Math.sqrt(dx * dx + dy * dy);