AS3: Stringoperation Tausendertrennung / Zifferngruppierung

Ein sehr triviales Problem tritt bei der Darstellung von sehr großen Zahlen auf. Um die Lesbarkeit dieser Zahlen zu erhöhen, sollte man die Ziffern gruppieren. Allgemein spricht man hier von der Tausendertrennung. Diese Funktion erledigt das für euch!

Der Aufruf

// Ergebnis: 1.010
groupNumber(1010);
// Ergebnis 222.111
groupNumber(222111);
// Ergebnis 1.234.567.890
groupNumber(1234567890);

Die Funktion finden Sie nach dem Break!
(mehr …)

AS3: MovieClips zufällig abspielen lassen

In Vorschau-Fenstern oder MP3-Playern sieht/hört man zufällig abgespielte MovieClips. Dieses Howto erklärt euch, wie ihr eine zufällige Wiedergabe in Actionscript 3 realisiert. Dabei werden verschiedene Varianten erklärt mit unterschiedlichen Ansätzen. Folgende MovieClip-Klassen(mit Animation) sind vorhanden:

  • blau_mc
  • rot_mc
  • gelb_mc
  • gruen_mc

(mehr …)

AS3: Dynamisch-beschrifteter Button mit einem Link auf eine andere Webseite/URL-Adresse

Die meisten Anfänger scheitern schon bei den einfachsten Anforderungen. Dazu gehört beispielsweise ein einfacher Button, der dynamisch zur Laufzeit beschriftet wird und eine externe Webseite/URL-Adresse öffnet. Verwendet wird diese Art von Buttons in Navigationen für Webseiten oder in CMS Systemen. Das folgende Skript macht aus einer beliebigen Instanz mit dem Namen „meinFeld“ einen Button. Dieses muss in die Zeitleiste des Films eingefügt werden:

import flash.events.MouseEvent;

//Eventlistner hinzufügen
meinFeld.addEventListener(MouseEvent.CLICK, click);

// Clickevent verarbeiten
function click(e:MouseEvent):void
{
	 // Hier passiert was, z.B.
	 trace("Klick erfolgreich!");
}

(mehr …)

AS3: Formatierung eines TextFields ändern in Actionscript 3

Ab und zu nutze ich die Komponenten aus Flash. Da kann es schon mal vorkommen, dass ich die Formatierung innerhalb eines dynamisch erzeugten TextFields ändern muss. Mit der Klasse „TextFormat“ geht das ganz einfach:

package
{
     import flash.display.Sprite;
     import flash.events.Event;
     import flash.text.TextField;
     import flash.text.TextFormat;
     import flash.text.TextFormatAlign;
     
     /**
      * ...
      * @author Alexander Gr. - AxxG Blog
      */
     public class Main extends Sprite
     {
        public function Main():void
        {
           if (stage) init();
           else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void
        {
           removeEventListener(Event.ADDED_TO_STAGE, init);
 
           var mytext:TextField = new TextField();
           mytext.text = "AxxG Blog";
 
           var mytext2:TextField = new TextField();
           mytext2.text = "Hallo Welt";
           
           var newFormat:TextFormat = new TextFormat();
           newFormat.align = TextFormatAlign.CENTER;
           newFormat.bold = true;
           // weitere Eigenschaften definieren

           text.setTextFormat(newFormat);
           // Erklaerung
           // mytext.setTextFormat(textFormat:TextFormat)	Wendet die Eigenschaften von textFormat auf den gesamten Text im Textfeld an.
           // mytext.setTextFormat(textFormat:TextFormat, beginIndex:int)	Wendet die Eigenschaften von textFormat auf den Text an, der an der Position beginIndex beginnt.
           // mytext.setTextFormat(textFormat:TextFormat, beginIndex:int, endIndex:int)	Wendet die Eigenschaften von textFormat auf den Textbereich zwischen beginIndex und endIndex - 1 an.

 
           this.addChild(mytext);
           this.addChild(mytext2);
        }
     }   
}

(mehr …)

AS3: For-Each-Schleife für unterschiedliche Items in einem Array

Um alle Items eines Arrays, Vektors oder Objektes zu durchlaufen, verwendet man normalerweise eine For-Each-Schleife wie diese:

var myArray:Array = ["AxxG", "rockt", "total", "!!!"];
for each (var item:String in myArray)
{
	trace(item);
	// Ausgabe: AxxG rockt total !!!
}

var myNumArray:Array = [1, 2, 3, 4, 5, 6, 7];
for each (var item:uint in myNumArray)
{
	trace(item);
	// Ausgabe 1 2 3 4 5 6 7
}

Was passiert, wenn man unterschiedliche Datentypen in einem Array verwendet? Genau, eine Exception wird geworfen. Nicht sehr schön für den Programmierer, aber hier kommt die Lösung:

var myArray:Array = [111, "AxxG", "rockt", "mindestens", 1000000000000, "Mal", "!!!", 111];
for each (var item:* in myArray)
{
	if (item is String)
	{
		trace("Das Item ist ein String mit dem Wert: " + item);
	}
	else if (item is Number)
	{
		trace("Das Item ist ein Number mit dem Wert: " + item);
	}
}

/* Ausgabe 
 * Das Item ist ein Number mit dem Wert: 111
 * Das Item ist ein String mit dem Wert: AxxG
 * Das Item ist ein String mit dem Wert: rockt
 * ...
*/

AS3: Einfacher Schutz und Lokalisierung von SWF-Dateien mit LoaderInfo

Dieser kleine Codeschnipsel überprüft den Pfad / die URL zu eurer SWF-Datei. Sollte dieser nicht mit euren Vorgaben übereinstimmen, wird automatisch auf eine andere Html-Seite umgeleitet. Eine andere Anwendung ist eine URL-abhängige Lokalisierung.
(mehr …)

AS3: Eigenschaften aus einer externen Properties-Datei auslesen

EigenschaftenBei der Programmierung von dynamische Anwendungen ist es immer sinnvoll, änderbare Texte und Variablen in externen Dateien auszulagern. Auf diese Weise kann man dynamische Anwendungen erstellen, ohne die ActionScript-Dateien zu bearbeiten oder neu kompilieren zu müssen. Weiter geht es nach dem Break…

(mehr …)

AS3: Aufbau, Syntax und Notation von Actionscript 3

Dieser Beitrag ist für Profis und Fortgeschrittene im Bereich Programmierung gedacht. Er gibt einen groben Überblick über die Syntax, Notation und Aufbau der Skriptsprache Actionscript 3. Weitere Informationen, die Dokumentation und natürlich den Link zur API findet hier:

API

Doku

 

 

 

 

 

 

 

Die Übersicht findet ihr nach dem Break!

(mehr …)

AS3: Einfacher Loader / Preloader zum laden von SWF-Dateien, Bildern, Texte, etc. in Actionscript 3

import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.net.URLRequest;

// Pfad zum Objekt, was geladen werden soll (relativ)
var url:String = "/pic/meinBild.jpg";
var reg:URLRequest = new URLRequest(url);
var myLoader:Loader = new Loader();

// EventListener
// Wird ausgeloest, wenn das Bild fertig geladen ist
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
// Wird ausgeloest, wenn ein Fehler aufgetreten ist
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, fehler);
// Wird ausgeloest, während des Ladens
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, update);

// Ladevorgang starten
myLoader.load(reg);

function fertig(e:Event):void{
	// Inhalt der Stage hinzufügen
	this.addChild(myLoader);
	// oder
	this.addChild(e.currentTarget.content);
}

function fehler(e:IOErrorEvent):void{
	trace("Es ist ein Fehler aufgetreten: " + e);
}

function update(e:ProgressEvent):void{
	var total:Number = e.bytesTotal;
	var loaded:Number = e.bytesLoaded;
	var percent:Number = Math.floor((loaded*100)/total);
	// Ausgabe während des Ladens
	trace("Es wurden " + loaded + "Bytes von " + total +" Bytes geladen. Also " + percent + "%");
}

AS3: Movieclip rückwärts abspielen

In jedem Flash-Forum findet man 1.000 x mal ein und die selbe Frage: “Wie kann ich einen Movieclip rückwärts abspielen?”. Hier ist die Antwort…

Ausgangsdaten

  • MC namens “meinMC”
  • Button zum auslösen der Funktion namens “meinAusloeser_btn”

Code

import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

// Wenn auf "meinAusloeser_btn" geklickt wird, führt er die Funktion "meineFunktion" aus
meinAusloeser_btn.addEventListener(MouseEvent.CLICK, meineFunktion);

// Variable deklarieren
var myTimer:Timer;

function meineFunktion(e:MouseEvent) {
	//Die "40" steht fuer die Verzoegerungszeit und das "meinMC.currentFrame" auf die Anzahl der Wiederholungen
	myTimer = new Timer(40, meinMC.currentFrame);

	// Event wird nach jeder Verzoegerung ausgeloest 
	myTimer.addEventListener(TimerEvent.TIMER, rueckwaerts);
	// Event wird einmal am Ende ausgeloest
	myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timerende);

	// Timer starten
	myTimer.start();
}

// Diese Funktion wird nach jeder Verzoegerungszeit ausgefuehrt
function rueckwaerts(evt:TimerEvent):void {
	meinMC.gotoAndStop(meinMC.currentFrame-1);
}

// Diese Funktion wird am Ende(nach dem letzten Durchlauf) ausgefuehrt
function timerende(evt:TimerEvent):void {
	// loescht den MovieClip
	removeChild(meinMC);
}

Fertig^^

« Ältere Einträge