+

Flashplayer


// 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;
    }
  }

}