FLVController
| Kind of class: | class |
|---|---|
| Inherits from: | LocalController |
| Author: | stephan.bezoen |
| Classpath: | controller.FLVController |
| File last modified: | Monday, 06 November 2006, 08:09:10 |
// ASAP classes
import org.asapframework.events.EventDelegate;
import org.asapframework.management.movie.LocalController;
import org.asapframework.ui.video.FLVPlayer;
import org.asapframework.ui.video.FLVPlayerEvent;
import org.asapframework.ui.video.FLVMetaData;
import controller.ProgressController;
import ui.SUProgressBar;
import ui.ProgressBar;
/**
This demo shows how to use FLVPlayer.
@author stephan.bezoen
*/
class controller.FLVController extends LocalController {
private static var MOVIE_URL:String = "../media/Chatman.flv";
private static var PLAYER_VIDEO_LINKAGE_ID:String = "videoContainer"; // "videoContainer" is the linkage id of the library symbol containing the video symbol
private static var PLAYER_X:Number = 0;
private static var PLAYER_Y:Number = 0;
private static var PROGRESS_BAR_1_WIDTH:Number = 400;
private static var PROGRESS_BAR_1_HEIGHT:Number = 20;
private static var PROGRESS_BAR_1_X:Number = 0;
private static var PROGRESS_BAR_1_Y:Number = 280;
private static var PROGRESS_BAR_2_WIDTH:Number = 400;
private static var PROGRESS_BAR_2_HEIGHT:Number = 10;
private static var PROGRESS_BAR_2_X:Number = 0;
private static var PROGRESS_BAR_2_Y:Number = 285;
private static var BUTTON_PLAY_X:Number = 0;
private static var BUTTON_PLAY_Y:Number = 258;
private static var BUTTON_PAUSE_X:Number = 0;
private static var BUTTON_PAUSE_Y:Number = 258;
private static var BUTTON_STOP_X:Number = 22;
private static var BUTTON_STOP_Y:Number = 258;
private static var DEPTH_PLAYER:Number = 1;
private static var DEPTH_PROGRESSBAR:Number = 2;
private static var DEPTH_PROGRESSBAR2:Number = 3;
private static var DEPTH_STOP:Number = 4;
private static var DEPTH_PLAY:Number = 5;
private static var DEPTH_PAUSE:Number = 6;
private static var DEPTH_LOADINGANIM:Number = 7;
private var mPlayer:FLVPlayer;
private var mStop_btn:MovieClip;
private var mPlay_btn:MovieClip;
private var mPause_btn:MovieClip;
private var mLoadingAnim_mc:MovieClip;
/**
* Constructor
*/
public function FLVController (inTimeline:MovieClip) {
super(inTimeline);
createUI();
startMovie();
}
/**
*/
private function createUI () : Void {
var movieWidth:Number = mTimeline._width;
var movieHeight:Number = mTimeline._height;
// create video player; "videoContainer" is the linkage id of the library symbol containing the video symbol
mPlayer = new FLVPlayer(mTimeline, PLAYER_VIDEO_LINKAGE_ID, DEPTH_PLAYER, PLAYER_X, PLAYER_Y);
// set smoothing filter on
mPlayer.setFilters(null, true);
// listen to all events from the video player
mPlayer.addEventListener(FLVPlayerEvent.EVENT_FLVPLAYER, EventDelegate.create(this, handleFLVPlayerEvent));
// create progress bar
var progBar:ProgressBar = new ProgressBar(mTimeline, DEPTH_PROGRESSBAR, PROGRESS_BAR_1_X, PROGRESS_BAR_1_Y, PROGRESS_BAR_1_WIDTH, PROGRESS_BAR_1_HEIGHT);
// create progress controller
var vpc:ProgressController = new ProgressController(mPlayer, mPlayer.getCurrentPlayPercentage, progBar, progBar.setPercentage);
vpc.start();
// create second progress bar
var progBar2:SUProgressBar = new SUProgressBar(mTimeline, DEPTH_PROGRESSBAR2, PROGRESS_BAR_2_X, PROGRESS_BAR_2_Y, PROGRESS_BAR_2_WIDTH, PROGRESS_BAR_2_HEIGHT);
progBar2.setSource(mPlayer, mPlayer.getLoadedPercentage);
progBar2.start();
mPlay_btn = mTimeline.attachMovie("play", "play_mc", DEPTH_PLAY);
mPlay_btn._x = BUTTON_PLAY_X;
mPlay_btn._y = BUTTON_PLAY_Y;
mPlay_btn.onRelease = EventDelegate.create(this, playMovie);
mPause_btn = mTimeline.attachMovie("pause", "pause_mc", DEPTH_PAUSE);
mPause_btn._x = BUTTON_PAUSE_X;
mPause_btn._y = BUTTON_PAUSE_Y;
mPause_btn.onRelease = EventDelegate.create(this, pauseMovie);
mStop_btn = mTimeline.attachMovie("stop", "stop_mc", DEPTH_STOP);
mStop_btn._x = BUTTON_STOP_X;
mStop_btn._y = BUTTON_STOP_Y;
mStop_btn.onRelease = EventDelegate.create(this, stopMovie);
// create loading animation
mLoadingAnim_mc = mTimeline.attachMovie("loader", "loading_mc", DEPTH_LOADINGANIM);
mLoadingAnim_mc._x = movieWidth / 2;
mLoadingAnim_mc._y = movieHeight / 2 - PROGRESS_BAR_1_HEIGHT / 2;
}
/**
Start the movie.
*/
private function startMovie () : Void {
mPlayer.playMovie(MOVIE_URL);
}
/**
Stop the video.
*/
private function stopMovie() : Void {
mPlayer.stop();
}
/**
Resume the video when paused.
*/
private function playMovie() : Void {
if (mPlayer.getStatus() == FLVPlayer.PAUSED) {
mPlayer.resume();
} else {
mPlayer.play();
}
}
/**
Pause the video.
*/
private function pauseMovie() : Void {
mPlayer.pause();
}
// EVENT HANDLING
/**
Handle all events from video player
*/
private function handleFLVPlayerEvent (e:FLVPlayerEvent) : Void {
switch (e.subtype) {
case FLVPlayerEvent.PLAY_STARTED: handleVideoStartedPlaying(); break;
case FLVPlayerEvent.STATUS_CHANGE: handleFLVPLayerStatusChange(e.status); break;
case FLVPlayerEvent.METADATA_RECEIVED: handleMetaDataReceived(); break;
}
}
/**
Handle event sent by video player that the video has started playing.
*/
private function handleVideoStartedPlaying () : Void {
mLoadingAnim_mc.stop();
mLoadingAnim_mc._visible = false;
}
/**
Handle event sent by video player that the status has changed.
*/
private function handleFLVPLayerStatusChange (inStatus:String) : Void {
switch (inStatus) {
case FLVPlayer.STOPPED:
mPause_btn._visible = false;
mPlay_btn._visible = true;
break;
case FLVPlayer.PLAYING:
mPause_btn._visible = true;
mPlay_btn._visible = false;
break;
case FLVPlayer.PAUSED:
mPause_btn._visible = false;
mPlay_btn._visible = true;
break;
}
}
/**
Handle event from video player that meta data has arrived
*/
private function handleMetaDataReceived () : Void {
var md:FLVMetaData = mPlayer.getMetaData();
}
/**
Main entry point, called from the Flash mTimeline.
*/
public static function main (inTimeline:MovieClip) : Void {
// create new controller
var controller:FLVController = new FLVController(inTimeline);
// store controller on mTimeline
inTimeline.localController = controller;
}
public function toString() : String {
return ";controller.FLVController";
}
}
This demo shows how to use FLVPlayer.
Summary
Constructor
Class properties
- MOVIE_URL
- PLAYER_VIDEO_LINKAGE_ID
- PLAYER_X
- PLAYER_Y
- PROGRESS_BAR_1_WIDTH
- PROGRESS_BAR_1_HEIGHT
- PROGRESS_BAR_1_X
- PROGRESS_BAR_1_Y
- PROGRESS_BAR_2_WIDTH
- PROGRESS_BAR_2_HEIGHT
- PROGRESS_BAR_2_X
- PROGRESS_BAR_2_Y
- BUTTON_PLAY_X
- BUTTON_PLAY_Y
- BUTTON_PAUSE_X
- BUTTON_PAUSE_Y
- BUTTON_STOP_X
- BUTTON_STOP_Y
- DEPTH_PLAYER
- DEPTH_PROGRESSBAR
- DEPTH_PROGRESSBAR2
- DEPTH_STOP
- DEPTH_PLAY
- DEPTH_PAUSE
- DEPTH_LOADINGANIM
Instance properties
Class methods
Constructor
FLVController
function FLVController (
inTimeline:MovieClip)
Constructor
Class properties
BUTTON_PAUSE_X
static private BUTTON_PAUSE_X:Number = 0
(read,write)
BUTTON_PAUSE_Y
static private BUTTON_PAUSE_Y:Number = 258
(read,write)
BUTTON_PLAY_X
static private BUTTON_PLAY_X:Number = 0
(read,write)
BUTTON_PLAY_Y
static private BUTTON_PLAY_Y:Number = 258
(read,write)
BUTTON_STOP_X
static private BUTTON_STOP_X:Number = 22
(read,write)
BUTTON_STOP_Y
static private BUTTON_STOP_Y:Number = 258
(read,write)
DEPTH_LOADINGANIM
static private DEPTH_LOADINGANIM:Number = 7
(read,write)
DEPTH_PAUSE
static private DEPTH_PAUSE:Number = 6
(read,write)
DEPTH_PLAY
static private DEPTH_PLAY:Number = 5
(read,write)
DEPTH_PLAYER
static private DEPTH_PLAYER:Number = 1
(read,write)
DEPTH_PROGRESSBAR
static private DEPTH_PROGRESSBAR:Number = 2
(read,write)
DEPTH_PROGRESSBAR2
static private DEPTH_PROGRESSBAR2:Number = 3
(read,write)
DEPTH_STOP
static private DEPTH_STOP:Number = 4
(read,write)
MOVIE_URL
static private MOVIE_URL:String = "../media/Chatman.flv"
(read,write)
PLAYER_VIDEO_LINKAGE_ID
static private PLAYER_VIDEO_LINKAGE_ID:String = "videoContainer"
(read,write)
PLAYER_X
static private PLAYER_X:Number = 0
(read,write)
PLAYER_Y
static private PLAYER_Y:Number = 0
(read,write)
PROGRESS_BAR_1_HEIGHT
static private PROGRESS_BAR_1_HEIGHT:Number = 20
(read,write)
PROGRESS_BAR_1_WIDTH
static private PROGRESS_BAR_1_WIDTH:Number = 400
(read,write)
PROGRESS_BAR_1_X
static private PROGRESS_BAR_1_X:Number = 0
(read,write)
PROGRESS_BAR_1_Y
static private PROGRESS_BAR_1_Y:Number = 280
(read,write)
PROGRESS_BAR_2_HEIGHT
static private PROGRESS_BAR_2_HEIGHT:Number = 10
(read,write)
PROGRESS_BAR_2_WIDTH
static private PROGRESS_BAR_2_WIDTH:Number = 400
(read,write)
PROGRESS_BAR_2_X
static private PROGRESS_BAR_2_X:Number = 0
(read,write)
PROGRESS_BAR_2_Y
static private PROGRESS_BAR_2_Y:Number = 285
(read,write)
Instance properties
mLoadingAnim_mc
private mLoadingAnim_mc:MovieClip
(read,write)
mPause_btn
private mPause_btn:MovieClip
(read,write)
mPlay_btn
private mPlay_btn:MovieClip
(read,write)
mPlayer
private mPlayer:FLVPlayer
(read,write)
mStop_btn
private mStop_btn:MovieClip
(read,write)
Class methods
main
static function main (
inTimeline:MovieClip) : Void
Main entry point, called from the Flash mTimeline.
Instance methods
createUI
private function createUI (
) : Void
handleFLVPlayerEvent
private function handleFLVPlayerEvent (
e:FLVPlayerEvent) : Void
Handle all events from video player
handleFLVPLayerStatusChange
private function handleFLVPLayerStatusChange (
inStatus:String) : Void
Handle event sent by video player that the status has changed.
handleMetaDataReceived
private function handleMetaDataReceived (
) : Void
Handle event from video player that meta data has arrived
handleVideoStartedPlaying
private function handleVideoStartedPlaying (
) : Void
Handle event sent by video player that the video has started playing.
pauseMovie
private function pauseMovie (
) : Void
Pause the video.
playMovie
private function playMovie (
) : Void
Resume the video when paused.
startMovie
private function startMovie (
) : Void
Start the movie.
stopMovie
private function stopMovie (
) : Void
Stop the video.
toString
function toString (
) : String
© The authors of ASAP framework|Created with VisDoc|Thursday, 09 November 2006, 16:17:19|show TOChide TOC|show private members|hide private members© The authors of ASAP framework|hide TOC