/**
* @author Jefferson González
* @copyright 2010 Jefferson González
*
* @license
* This file is part of Jaris FLV Player.
*
* Jaris FLV Player is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License or GNU LESSER GENERAL
* PUBLIC LICENSE as published by the Free Software Foundation, either version
* 3 of the License, or (at your option) any later version.
*
* Jaris FLV Player is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License and
* GNU LESSER GENERAL PUBLIC LICENSE along with Jaris FLV Player. If not,
* see .
*/
package jaris.display;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.Lib;
import flash.net.URLRequest;
import jaris.events.PlayerEvents;
import jaris.player.InputType;
import jaris.player.Player;
/**
* To display an png, jpg or gif as preview of video content
*/
class Poster extends Sprite
{
private var _stage:Stage;
private var _movieClip:MovieClip;
private var _loader:Loader;
private var _source:String;
private var _width:Float;
private var _height:Float;
private var _loading:Bool;
private var _player:Player;
public function new(source:String, showLoader:Bool)
{
super();
_stage = Lib.current.stage;
_movieClip = Lib.current;
_loader = new Loader();
_source = source;
_loading = true;
//Reads flash vars
var parameters:Dynamic = flash.Lib.current.loaderInfo.parameters;
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);
_loader.load(new URLRequest(source));
}
/**
* Triggers when the poster image finalized loading
* @param event
*/
private function onLoaderComplete(event:Event):Void
{
addChild(_loader);
_width = this.width;
_height = this.height;
_loading = false;
_stage.addEventListener(Event.RESIZE, onStageResize);
resizeImage();
}
/**
* Triggers when the stage is resized to resize the poster image
* @param event
*/
private function onStageResize(event:Event):Void
{
resizeImage();
}
private function onPlayerMediaInitialized(event:PlayerEvents)
{
if (_player.getType() == InputType.VIDEO)
{
if ( !_player.getLoadType() ) {
this.visible = false;
}
}
}
private function onPlayerPlay(event:PlayerEvents)
{
if (_player.getType() == InputType.VIDEO)
{
this.visible = false;
}
}
private function onPlayBackFinished(event:PlayerEvents)
{
this.visible = true;
}
/**
* Resizes the poster image to take all the stage
*/
private function resizeImage():Void
{
this.height = _stage.stageHeight;
this.width = ((_width / _height) * this.height);
this.x = (_stage.stageWidth / 2) - (this.width / 2);
}
/**
* To check if the poster image stills loading
* @return true if stills loading false if loaded
*/
public function isLoading():Bool
{
return _loading;
}
public function setPlayer(player:Player):Void
{
_player = player;
_player.addEventListener(PlayerEvents.MEDIA_INITIALIZED, onPlayerMediaInitialized);
//_player.addEventListener(PlayerEvents.PLAYBACK_FINISHED, onPlayBackFinished);
_player.addEventListener(PlayerEvents.PLAY_PAUSE, onPlayerPlay);
}
}