Jetzt sehen Sie durch:Actionscript 3

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: Kommunikation zwischen Actionscript 3 und JavaScript

Eine Funktion rufen:

import flash.external.ExternalInterface;
...
ExternalInterface.call('deine_javascript_funktion()');

Eine Funktion mit Rückgabewert rufen:

var x:int = ExternalInterface.call('get_x()');

Eine Funktion mit Rückgabewert und einem übergebenen Wert rufen:

var x:int = ExternalInterface.call('deine_javascript_funktion()', 'der wert');

einfach oder?

Software zur Sicherung von SWF Dateien / Flash / Actionscript Projekten

Jeder Entwickler kennt das Thema: “Wie sichere ich meine Anwendung vor Codediebstahl?” oder “Was kann ich gegen Decompiler tun?”. Die Antworten liefern aufwendige Verschlüsslungsalgorithmen (ein schönes HowTo findet ihr hier) oder kostenpflichtige Programme. Genau diese Programme stelle ich vor:

Logo Name Firma Kosten Version Link
SWF Encrypt SWF Encrypt amayeta 100 € 6.0 hier
secure SWF secureSWF Kindisoft ab 99 $
(dezimierte Version)
3.5 hier
OBFU OBFU Motion-Twin ab 500 € k.a hier
swf Protector SWF Protector DCOMSOFT 39,95 € 3.0 hier

Weitere Informationen und der genaue Test nach dem break!

(mehr …)

AS3: Systemdaten / Benutzerinformationen per Actionscript 3 auslesen

Das folgende Beispiel zeigt dir einige Informationen über dein System / Flashplayer an.

Diese Daten können mit Hilfe der Capabilities Klasse ausgelesen werden. Man ruft lediglich die Variablen der Klasse per Getter ab.

Hier der Actionscript 3 Code:


package
{
 import flash.system.Capabilities;
 import flash.display.Sprite;

 public class info extends Sprite
 {
 public function info()
 {
 this.a_txt.text = Capabilities.os;
 this.b_txt.text = Capabilities.version;
 this.c_txt.text = Capabilities.isDebugger.toString();
 this.d_txt.text = new Date().toString();
 this.e_txt.text = Capabilities.language;
 }
 }
}

Viel Spaß!

PS: Nicht die Imports vergessen!

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^^

Alle Objekte in der Anzeigeliste / Stage ausgeben

Das Problem kennen bestimmt viele von euch… KEINER WEIS, was für Instanzen in der Stage liegen. Besonders ärgerlich ist das, wenn man mehr mit Code als mit der Zeitleiste arbeitet. Instanzen dynamisch zu erzeugen ist leicht, aber wo befindet Sie sich?
Diese Funktion gibt euch alle, wirklich alle Instanzen mit Namen aus. Davor befindet sich der Container, indem sich diese befindet.

ActionScript:

function displayAll(container:DisplayObjectContainer, parent:String):void
{
	var child:DisplayObject;

	parent = parent + "--->" + container.name;

	for (var i:uint=0; i < container.numChildren; i++) {
		child = container.getChildAt(i);
		if (child is MovieClip) {
			trace(container.name + "--->" + child.name);
		}
		if (child is DisplayObjectContainer) {
			displayAll(DisplayObjectContainer(child), parent );
		}
	}
	trace(parent);
}

// Aufruf
displayAll(this, "stage");

Die Funktion wird mit „displayAll(this.stage, „stage“);“ aufgerufen!

bis die Tage

lg Alexander

Neuere Einträge »