/** * Flash Video for Professionals: MVC Player * http://www.flashconnections.com * @author James O'Reilly */ package com.flashconnections.ui.component.mediaPlayer { import flash.net.NetConnection; import flash.events.NetStatusEvent; import com.flashconnections.pattern.mvc.Model; import com.flashconnections.ui.component.mediaPlayer.ifc.Iactionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerModel; import com.flashconnections.ui.component.mediaPlayer.MediaPlayerView; import com.flashconnections.ui.component.mediaPlayer.NetStreamExt; import com.flashconnections.ui.component.mediaPlayer.playlist.ifc.IPlaylist; import com.flashconnections.ui.component.mediaPlayer.playlist.Playlist; import com.flashconnections.util.Trace; public class actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerModel extends Model implements Iactionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerModel { private var _conn_nc:NetConnection; private var _stream_ns:NetStreamExt; private var _playlist:IPlaylist; private var _path:String; public function setConnection(val:NetConnection):void { _conn_nc = val; } public function getConnection():NetConnection { return _conn_nc; } public function setStream(val:NetStreamExt):void { _stream_ns = val; } public function getStream():NetStreamExt { return _stream_ns; } public function actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerModel() {} public override function init():void { setConnection(new NetConnection()); getConnection().connect(null); getConnection().addEventListener(NetStatusEvent.NET_STATUS, onConnNetStatus); setStream(new NetStreamExt(getConnection())); getStream().bufferTime = 3; setPlaylist(new Playlist()); } public override function toString():String { return "com.flashconnections.ui.component.mediaPlayer.actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerModel"; } // events public function onConnNetStatus(event:NetStatusEvent):void { trace("connection status: "); for (var prop:String in event.info) { trace("\t" + prop + ": " + event.info[prop]); } } public function onBWDone ():void { trace("connection onBWDone"); } // transport methods public function play():void { getStream().play(_path); MediaPlayerView(getView()).onPlay(); } public function playMedia(path:String):void { _path = path; getStream().close(); getStream().play(path); MediaPlayerView(getView()).onPlayMedia(path); } public function pause():void { getStream().togglePause(); MediaPlayerView(getView()).onPause(); } public function stop():void { getStream().close(); MediaPlayerView(getView()).onStop(); } public function setMediaPosition(val:Number):void { MediaPlayerView(getView()).onSetMediaPosition(val); } public function getMediaPosition():Number { return -1; } public function setVolume(val:Number):void {} public function getVolume():Number { return -1; } // playlist methods public function setPlaylist(val:IPlaylist):void { _playlist = val; } public function getPlaylist():IPlaylist { return _playlist; } public function playNext():void { playMedia(String(getPlaylist().getNext())); MediaPlayerView(getView()).onPlay(); } public function playPrevious():void { playMedia(String(getPlaylist().getPrevious())); MediaPlayerView(getView()).onPlay(); } } }