Mit dem Open-Source-Compiler haXe lassen sich SWF-Dateien für den Flash Player 6 bis 9 erstellen. haXe unterstützt deshalb auch die komplette ActionScript 3 API, mit einigen wenigen Abweichungen (z.B. flash.Lib.current statt _root).
Über das Eclipse-Plugin Eclihaxe kann der Compiler in Eclipse integriert werden. Interessant ist dies wohl vorallem für diejenigen, die keine Flash IDE haben (Flash 9 Alpha) oder einfach mal was neues ausprobieren möchten …
Hier der Link zu einem kleinen Beispiel, das ich mit haXe gemacht habe: AS3-„Webcam“-Beispiel (Webcam und Flash Player 9 nötig). Getestet habe ich die NetConnection, NetStream und Camera Klasse, die alle tadellos übersetzt wurden.
Link: haXe (Compiler für SWF-Dateien, Flash Player 6 bis 9)
Link: Eclipse (IDE)
Link: Eclihaxe (Plug-in für Eclipse)
Obwohl ich persoenlich Eclipse vorziehe, unter Flashdevelop.org gibt es eine ordentliche IDE die unter anderem auch haXe unterstuetzt. Selbst SWFMill funktionalitaet ist bereits mit eingebaut.
Hallo, kann ich die Quelle dieser Beispiel irgendwo finden ?
AS3WebcamExample.hx
/*
ActionScript 3 Webcam Example
http://www.video-flash.de
*/
class AS3WebcamExample {
static function main() {
var wc:Webcam = new Webcam();
}
}
Und die Datei Webcam.hx:
/*
http://www.video-flash.de
*/
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.events.ActivityEvent;
import flash.media.Camera;
import flash.media.Microphone;
import flash.utils.Timer;
import flash.text.TextField;
class Webcam{
var myTimer:Timer;
var cam:Camera;
var tf:TextField;
private var motionState:String;
public function new(){
createTxt();
var myVideo:Video = new Video(400,300);
flash.Lib.current.addChild(myVideo);
myVideo.y = 100;
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
// Kamera initialisieren
cam = Camera.getCamera();
// Kamera-Modus festlegen: 400×300 mit 10 Bildern pro Sekunde
cam.setMode(400,300,10);
// Anzahl der Keyframes festlegen (für eine Uebertragung an den FMS): Keyframe alle 50 Bilder
cam.setKeyFrameInterval(50);
// Qualitaet einstellen (für eine Uebertragung an den FMS): Bandbreite ist 16384 Bytes pro Sekunde, Qualität wird angepasst (=0)
cam.setQuality(16384,0);
// Mikrophone
var mic:Microphone = Microphone.getMicrophone();
mic.rate=10;
// Kamera mit Videodisplay verbinden
myVideo.attachCamera(cam);
// bei 40% Bewegunganslevel das Activity-Event auslösen
// nach 1s (=1000ms)
cam.setMotionLevel(40, 1000);
cam.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
//Neuer Timer, Funktionsaufruf alle 500 ms
myTimer = new Timer(500);
myTimer.addEventListener(„timer“, timedFunction);
myTimer.start();
}
private function timedFunction(eventArgs:TimerEvent) {
tf.text = „Bilder pro Sekunde: “ + cam.currentFPS + „\n“ + „\n“ + „Bewegung im Bild: “ + cam.activityLevel + „\n“ + motionState;
}
private function activityHandler(event:ActivityEvent) {
if (event.activating == true) {
this.motionState = „Bewegungslevel ueberschritten“;
}
else {
this.motionState = „Bewegungslevel wieder unterschritten“;
}
}
private function createTxt() {
tf = new TextField();
flash.Lib.current.addChild(tf);
tf.width = 600;
}
}
Danke für diese Antwort.
Hi,
beschäftige mich gerade ein wenig mit Haxe und wollte das obige Beispiel mal bei mir ausprobieren. Leider bekomm ich das Eclipse plugin nirgendwo mehr her und habs dann mal so auf der Kommandozeile versucht. Wenn ich jedoch die Webcam.hx compilieren möchte, bekomme ich folgende Fehlermeldung:
/usr/lib/haxe/std/Webcam.hx:5: characters 0-28 : Class not found : flash.display.Sprite
Liegt das evtl. daran, dass ne environment variable nicht gut gesetzt ist, oder muss man noch irgendwo her die Flash API runterladen und die mit einbinden?
Gruß, Iso5786
Mh, kann ich leider nicht weiterhelfen.