// Einfacher Player fuer FLV-Dateien mit AS3 geschrieben in haXe (http://haxe.org)
// nach dem Video-Tutorial unter http://www.gotoandlearn.com/play?id=46.
// Um den Quellcode zu kompilieren, erstelle man die Datei compilePlayer.hxml:
/*
-main Player
-swf player.swf
-swf-version 9
-swf-header 400:300:25:FFFFFF
*/
// und benutze den Compiler von http://haxe.org/download .
// Wenn das Video ein anderes Seitenverhaeltnis als 4:3 hat,
// muss das in der hxml und auch hier bei breite und hoehe geaendert werden.
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
class Player {
static var breite:Int = 400;// hier gibt man die groesse des Films an
static var hoehe:Int = 300; // auch in der compile...hxml-Datei ändern
static var mc : MovieClip;
static var background : Sprite;
static var bg : DisplayObject;
static var fernseher : Sprite;
static var film : String = ''; // wird als parameter uebergeben: player.swf?film=dateiname (ohne .flv)
static var spielt : Bool = false; // hier stelle ich ein, ob der Film am anfang losspielt
static var ende : Bool;
static var button:Sprite;
static var playButton: Sprite;
static var pauseButton: Sprite;
static var zehntel:Float;
public static function main() {
mc = flash.Lib.current;
// GET-parameter uebernehmen
var requeststr:Dynamic = mc.loaderInfo.parameters;
// die JPG-datei als hintergrund laden, die genauso heisst, wie die flv-Datei (z.B. film.flv & film.jpg)
var ldr:Loader = new Loader();
ldr.load(new URLRequest(requeststr.film+".jpg"));
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, geladen);
bg = mc.addChild(ldr);
film = (requeststr.film)+".flv";
var video:Video = new Video(breite,hoehe);
mc.addChild(video);
var hintergrund :String = requeststr.bg;
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
video.attachNetStream(ns);
if (spielt) {
ns.play(film);
ende = false;
} else {
ende = true;
fernseher = flash.Lib.attach("background"); // kommt aus library.swf
mc.addChild(fernseher);
fernseher.width = breite;
fernseher.height = hoehe;
if (breite<hoehe) { zehntel = breite/10.0; }
else { zehntel = hoehe/10.0; }
}
// hier spielt das Video schon wenn spielt auf true gesetzt ist, was folgt ist nur noch die Deklaration der Buttons
button = new Sprite();
button.graphics.beginFill(0x000000,0);
button.graphics.drawRect(0,0,mc.width,mc.height);
button.graphics.endFill();
if (spielt) { button.alpha= 0; }
else { button.alpha= 0.5; }
mc.addChild(button);
var kreis:Sprite = new Sprite();
kreis.graphics.beginFill(0x808080,0.75);
kreis.graphics.drawEllipse((mc.width/2)-zehntel*1.75,(mc.height/2)-zehntel*1.75,zehntel*3.5,zehntel*3.5);
kreis.graphics.endFill();
button.addChild(kreis);
playButton = new Sprite();
playButton.graphics.beginFill(0xFFFFFF);
playButton.graphics.moveTo((breite/2)-zehntel*0.6, (hoehe/2)-zehntel );
playButton.graphics.lineTo((breite/2)+zehntel*0.9, (hoehe/2) );
playButton.graphics.lineTo((breite/2)-zehntel*0.6, (hoehe/2)+zehntel );
playButton.graphics.lineTo((breite/2)-zehntel*0.6, (hoehe/2)-zehntel );
playButton.graphics.endFill();
button.addChild(playButton);
pauseButton = new Sprite();
pauseButton.graphics.beginFill(0xFFFFFF);
pauseButton.graphics.drawRect((breite/2)-zehntel*0.75, (hoehe/2)-zehntel ,zehntel/2,zehntel*2);
pauseButton.graphics.drawRect((breite/2)+zehntel/4 , (hoehe/2)-zehntel ,zehntel/2,zehntel*2);
pauseButton.graphics.endFill();
button.addChild(pauseButton);
if (spielt) {
playButton.alpha= 0;
pauseButton.alpha= 1;
} else {
playButton.alpha= 1;
pauseButton.alpha= 0;
}
button.addEventListener(MouseEvent.MOUSE_OVER, function(e){
button.alpha= 0.5;
});
button.addEventListener(MouseEvent.MOUSE_OUT, function(e){
button.alpha= 0;
});
button.addEventListener(MouseEvent.MOUSE_UP, function(e){
if (ende) {
ns.play(film);
playButton.alpha= 0;
pauseButton.alpha= 1;
ende = false;
spielt = true;
} else {
if (spielt) {
ns.pause();
spielt = false;
playButton.alpha= 1;
pauseButton.alpha= 0;
} else {
ns.resume();
spielt = true;
playButton.alpha= 0;
pauseButton.alpha= 1;
}
}
fernseher.alpha = 0;
});
}
static function geladen(e:Event) {
bg.width = breite;
bg.height = hoehe;
} // geladen
private static function netStatusHandler(event:NetStatusEvent) {
if (event.info.code == "NetStream.Play.Stop") {
ende = true;
spielt = false;
playButton.alpha= 1;
pauseButton.alpha= 0;
}
}
}