/** * Flash Video for Professionals: MVC Player * http://www.flashconnections.com * @author James O'Reilly */ package com.flashconnections.ui.component.mediaPlayer { import flash.display.MovieClip; import flash.media.Video; import com.flashconnections.pattern.mvc.Controller; import com.flashconnections.pattern.mvc.Model; import com.flashconnections.pattern.mvc.View; import com.flashconnections.ui.component.mediaPlayer.ifc.Iactionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView; import com.flashconnections.ui.component.mediaPlayer.MediaPlayerController; import com.flashconnections.ui.component.mediaPlayer.MediaPlayerModel; import com.flashconnections.ui.component.mediaPlayer.MediaPlayerButton; import com.flashconnections.util.Proxy; import flash.events.MouseEvent; import flash.display.Sprite; public class actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView extends View implements Iactionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView { private var _videoInstance:Video; public var playButton:MediaPlayerButton; public var pauseButton:MediaPlayerButton; public var stopButton:MediaPlayerButton; public var nextButton:MediaPlayerButton; public var prevButton:MediaPlayerButton; public function actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView(model:Model, controller:Controller, container:MovieClip) { super(model, controller, container); playButton = new MediaPlayerButton("Restart"); pauseButton = new MediaPlayerButton("Pause"); stopButton = new MediaPlayerButton("Stop"); nextButton = new MediaPlayerButton("Next"); prevButton = new MediaPlayerButton("Previous"); } public override function init():void { // Video Container var my_videocontainer:MovieClip = new MovieClip(); getContainer().addChild(my_videocontainer); my_videocontainer.x = 10; my_videocontainer.y = 10; // Video Component var my_video:Video = new Video(320,240); my_videocontainer.addChild(my_video); setContent(my_videocontainer); setVideoInstance(my_video); getVideoInstance().attachNetStream(MediaPlayerModel(getModel()).getStream()); // Tool Box of video controls var tools:Sprite = new Sprite(); tools.addChild(playButton); playButton.y = 80; tools.addChild(pauseButton) pauseButton.y = playButton.y + playButton.height + 10; tools.addChild(stopButton); stopButton.y = pauseButton.y + pauseButton.height + 10; tools.addChild(nextButton); nextButton.y = stopButton.y + stopButton.height + 10; tools.addChild(prevButton); prevButton.y = nextButton.y + nextButton.height + 10; getContainer().addChild(tools); tools.x = my_videocontainer.x + my_videocontainer.width + 60; } public override function initCoordinates(x:Number, y:Number, w:Number, h:Number):void { getContent().x = x; getContent().y = y; getContent().width = w; getContent().height = h; } public function setVideoInstance(val:Video):void { _videoInstance = val; } public function getVideoInstance():Video { return _videoInstance; } public override function layout():void { var cont:MovieClip = getContainer(); var cntrl:MediaPlayerController = MediaPlayerController(getController()); playButton.addEventListener(MouseEvent.CLICK, cntrl.play); pauseButton.addEventListener(MouseEvent.CLICK, cntrl.pause); stopButton.addEventListener(MouseEvent.CLICK, cntrl.stop); nextButton.addEventListener(MouseEvent.CLICK, cntrl.playNext); prevButton.addEventListener(MouseEvent.CLICK, cntrl.playPrevious); } public function onMetaData(val:Object):void { trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onMetaData" + " " + val.code); } public function onStatus(val:Object):void { trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onStatus" + " " + val.code); } public function onPlay():void { pauseButton.Label = "Pause"; pauseButton.enabled = true; pauseButton.alpha = 1; trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onPlay"); } public function onPlayMedia(path:String):void { trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onPlayMedia" + " " + path); } public function onPause():void { pauseButton.Label = (pauseButton.Label=="Pause")? "Resume":"Pause"; pauseButton.enabled = true; pauseButton.alpha = 1; trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onPause"); } public function onStop():void { pauseButton.Label = "Pause"; pauseButton.enabled = false; pauseButton.alpha = .35; trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onStop"); } public function onSetMediaPosition(val:Number):void { trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onSetMediaPosition" + " " + val); } public function onSetVolume(val:Number):void { trace("actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView.onSetVolume" + " " + val); } public function registerUIElement(name:String, val:MovieClip):void {} public override function toString():String { return "com.flashconnections.ui.component.mediaPlayer.actionscript_video_com_flashconnections_ui_component_mediaPlayer_MediaPlayerView"; } }}