All pastes #387401 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-03-09 10:20 UTC
rendered paste body
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;
		}
	}
}