package { import flash.display.MovieClip; import flash.display.Shape; import flash.events.Event; import flash.net.NetConnection; import flash.net.NetStream; import flash.media.Video; import flash.events.ProgressEvent; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.text.TextField; import flash.text.TextFormat; import flash.display.SimpleButton; public class MoviePlayer extends MovieClip { var owner:YouTube; var bg:Shape = new Shape(); var nc:NetConnection = new NetConnection(); var ns:NetStream; var vid:Video = new Video(320, 240); var vidTitle:TextField = new TextField(); var vidAuthor:TextField = new TextField(); var vidDescription:TextField = new TextField(); var vidTags:TextField = new TextField(); var largeText:TextFormat = new TextFormat(); var smallText:TextFormat = new TextFormat(); var buttonPlayPause:SimpleButton; var buttonClose:SimpleButton; var pauseUp = new Pause(); var pauseOver = new PauseOver(); var pauseDown = new PauseDown(); var playUp = new Play(); var playOver = new PlayOver(); var playDown = new PlayDown(); var closeUp = new Close(); var closeOver = new CloseOver(); var closeDown = new CloseDown(); var pauseSymbol = new PauseSymbol(); var playState:Boolean = true; var loadedBar:Shape = new Shape(); var positionIndicator:MovieClip = new Position(); var videoLength:Number; public function MoviePlayer(vidData:Array, vID:String, spawner:YouTube) { owner = spawner; alpha = 0.9; videoLength = vidData[3]; buttonPlayPause = new SimpleButton(); buttonClose = new SimpleButton(); vidTitle.autoSize = "left"; vidTitle.text = vidData[2]; vidTitle.selectable = false; vidAuthor.autoSize = "left"; vidAuthor.text = "By: " + vidData[0]; vidAuthor.selectable = false; vidDescription.width = "300"; vidDescription.wordWrap = true; vidDescription.text = vidData[6]; vidDescription.selectable = false; vidTags.width = "340"; vidTags.wordWrap = true; vidTags.text = "Tags: "+vidData[10]; vidTags.selectable = false; largeText.font = "Verdana"; largeText.color = 0xFFFFFF; largeText.bold = false; largeText.size = 16; smallText.font = "Verdana"; smallText.color = 0xFFFFFF; smallText.bold = false; smallText.size = 12; vidTitle.setTextFormat(largeText); vidAuthor.setTextFormat(largeText); vidDescription.setTextFormat(smallText); vidTags.setTextFormat(smallText); addChild(bg); addChild(loadedBar); addChild(positionIndicator); nc.connect(null); ns = new NetStream(nc); addChild(vid); addChild(vidTitle); addChild(vidAuthor); addChild(vidDescription); addChild(vidTags); buttonPlayPause.upState = pauseUp; buttonPlayPause.overState = pauseOver; buttonPlayPause.downState = pauseDown; buttonPlayPause.useHandCursor = true; buttonPlayPause.hitTestState = pauseUp; buttonPlayPause.addEventListener(MouseEvent.CLICK, togglePause); buttonClose.upState = closeUp; buttonClose.overState = closeOver; buttonClose.downState = closeDown; buttonClose.useHandCursor = true; buttonClose.hitTestState = closeUp; buttonClose.addEventListener(MouseEvent.CLICK, closeMovie); addChild(buttonPlayPause); addChild(buttonClose); nc.client = new Object(); vid.attachNetStream(ns); ns.play("http://83.149.112.11/getflv.php?url=http://www.youtube.com/?v="+vID); addEventListener(Event.ADDED, init); addEventListener(Event.ENTER_FRAME, enterFrame); } private function enterFrame(event:Event) { loadedBar.width = (ns.bytesLoaded / ns.bytesTotal) * 240; loadedBar.y = stage.stageHeight/2 + 135; loadedBar.x = stage.stageWidth/2 - 260; var playPos = (ns.time / videoLength) * 240; positionIndicator.y = loadedBar.y; positionIndicator.x = loadedBar.x + playPos; } private function closeMovie(event:Event) { ns.close(); nc.close(); vid.clear(); owner.closeMovie(this); } private function togglePause(event:MouseEvent) { playState = !playState; ns.togglePause(); if(playState) { buttonPlayPause.upState = pauseUp; buttonPlayPause.overState = pauseOver; buttonPlayPause.downState = pauseDown; removeChild(pauseSymbol); } else { buttonPlayPause.upState = playUp; buttonPlayPause.overState = playOver; buttonPlayPause.downState = playDown; addChild(pauseSymbol); } } private function init(event:Event) { bg.graphics.beginFill("0x222222"); bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); bg.graphics.endFill(); bg.graphics.beginFill("0x333333"); bg.graphics.drawRoundRect(stage.stageWidth/2 - 310, stage.stageHeight/2 - 130, 340, 295, 20); bg.graphics.endFill(); bg.graphics.beginFill("0x444444"); bg.graphics.drawRoundRect(stage.stageWidth/2 - 260, stage.stageHeight/2 + 135, 240, 10, 2); bg.graphics.endFill(); loadedBar.graphics.beginFill("0x664444"); loadedBar.graphics.drawRoundRect(0, 0, 20, 10, 2); loadedBar.graphics.endFill(); vid.x = stage.stageWidth/2 - 300; vid.y = stage.stageHeight/2 - 120; vidTitle.x = stage.stageWidth/2 - 310; vidTitle.y = stage.stageHeight/2 - 155; vidAuthor.x = stage.stageWidth/2 + 40; vidAuthor.y = stage.stageHeight/2 - 135; vidDescription.x = stage.stageWidth/2 + 40; vidDescription.y = stage.stageHeight/2 - 110; vidTags.x = stage.stageWidth/2 - 310; vidTags.y = stage.stageHeight/2 + 170; buttonPlayPause.x = stage.stageWidth/2 - 300; buttonPlayPause.y = stage.stageHeight/2 + 125; buttonClose.x = stage.stageWidth/2 - 10; buttonClose.y = stage.stageHeight/2 + 125; pauseSymbol.x = vid.x + 160; pauseSymbol.y = vid.y + 120; } } }