Показать сообщение отдельно
Старый 03.09.2008, 18:26
fancy вне форума Посмотреть профиль Отправить личное сообщение для fancy Найти все сообщения от fancy
  № 3  
Ответить с цитированием
fancy
 
Аватар для fancy

Регистрация: May 1999
Адрес: Казахстан, Алматы
Сообщений: 85
Отправить сообщение для fancy с помощью ICQ
продолжение кода
Код:
				
				// remove pause state
				soundIsPlaying = true;
				soundIsPaused = false;
				soundPausePosition = 0;
				
				soundChannel.addEventListener(Event.SOUND_COMPLETE, soundChannelSoundCompleteHandler);
				
				// update images array
				//if (hasImages)
					updateImages(event.item.name, event.item.comment);
					
				//if (!hasImages)
				{
					//trace(screen.getChildByName("loader"));
					var loaderClip:DisplayObject = screen.getChildByName("loader");
					if (loaderClip != null)
						screen.removeChild(loaderClip);
				}
				
				// set comment
				track.comment.text = event.item.comment;
				
				currentTrack = event.item;
				
				clearInterval(soundUpdateInterval);
				soundUpdateInterval = setInterval(soundUpdateIntervalHandler, 100);
				
				radioType = radioType;
			}
			
			function soundUpdateIntervalHandler():void
			{
				// update loading progress bar
				track.cachedBar.width = (Math.round(soundObject.bytesLoaded) / Math.round(soundObject.bytesTotal)) * 273;
				
				// update playing progress bar
				track.position.x = track.time.x = (soundChannel.position / (soundLengthSecs * 1000)) * 273;
				track.time.x -= 19;
				
				var timeMinutes:String = String(Math.floor(soundChannel.position / 59500));
				var timeSeconds:String = String(Math.round(soundChannel.position / 1000) % 60);
				
				if (timeSeconds.length == 1)
					timeSeconds = "0" + timeSeconds;
			
				track.time.text = timeMinutes + ":" + timeSeconds;
				
				// update buttons state
				if (!soundIsPlaying)
				{
					playButton.visible = true;
					stopButton.visible = false;
				}
				else
				{
					playButton.visible = false;
					stopButton.visible = true;
				}
				
				// update images
				//trace(images[imageCurrentIndex].time_secs + " > " + soundChannel.position / 1000);
				//trace(imageCurrentIndex);
				//if (hasImages)
				if (imageCurrentIndex < images.length - 1)
					if (images[imageCurrentIndex].time_secs < soundChannel.position / 1000)
					{
						var loaderClip:DisplayObject = screen.getChildByName("loader");
						if (loaderClip != null)
							screen.removeChild(loaderClip);
						
						var loader:Loader = new Loader();
						var urlRequest:URLRequest = new URLRequest(urlPrefix + "data/" + images[imageCurrentIndex].image);
						loader.load(urlRequest);
						loader.x = -345 / 2.0;
						loader.y = -189 / 2.0;
						loader.name = "loader";
						screen.addChild(loader);
					
						imageCurrentIndex++;
					}
			}
		
		// prepare track bar
		protected function prepareTrackBar():void
		{
			function trackClickHandler(event:MouseEvent):void
			{
				var newPosition:Number = (event.stageX - 357.6) / 273 * soundLengthSecs * 1000;
				
				soundChannel.stop();
				soundChannel = soundObject.play(newPosition, 0, soundTrans);
				soundIsPlaying = true;
				
				soundChannel.addEventListener(Event.SOUND_COMPLETE, soundChannelSoundCompleteHandler);
				
				// handle images displaying
				//if (hasImages)
				{
					imageCurrentIndex = 0;
					for (var i:Number = 0; i < images.length; i++)
					{
						if (images[i].time_secs > soundChannel.position / 1000)
						{
							imageCurrentIndex = i - 1;
							break;
						}
					}
				}
			}
			
			track.addEventListener(MouseEvent.CLICK, trackClickHandler);
		}
		
		protected function prepareVolumeSlider():void
		{
			function bgBigMouseMoveHandler(event:MouseEvent):void
			{
				if (volumeDrag)
				{
					var newX:Number = event.stageX - volumeBar.x;
					
					if (newX > 40.1 || newX < -0.1)
						return;
					
					volumeBar.track.x = newX;
					volumeBar.percent.x = newX - 15;
			
					var volPercent = volumeBar.track.x / 40;
					volumeBar.percent.text = Math.round(volPercent * 100) + "%";
					
					soundTrans.volume = volPercent;
					if (soundIsPlaying)
						soundChannel.soundTransform = soundTrans;
				}
			}
			
			volumeBar.bgBig.addEventListener(MouseEvent.MOUSE_DOWN, function() { volumeDrag = true; } );
			volumeBar.bgBig.addEventListener(MouseEvent.MOUSE_UP, function() { volumeDrag = false; } );
			volumeBar.bgBig.addEventListener(MouseEvent.MOUSE_OUT, function() { volumeDrag = false; } );
			volumeBar.bgBig.addEventListener(MouseEvent.MOUSE_MOVE, bgBigMouseMoveHandler);
			
			// prepare values
			var volPercent = volumeBar.track.x / 40;
			volumeBar.percent.text = Math.round(volPercent * 100) + "%";
	
			soundTrans.volume = volPercent;
			//soundChannel.soundTransform = soundTrans;
		}
		
		// prepare all data in player
		protected function prepareData():void
		{
			// load xml with all data
			function urlLoaderCompleteHandler(event:Event):void
			{
				dataXML = new XML(event.target.data);
				updateData();
			}
			
			var urlLoader:URLLoader = new URLLoader();
			urlLoader.addEventListener(Event.COMPLETE, urlLoaderCompleteHandler);
			urlLoader.load(new URLRequest(urlPrefix + "admin/xml.php"));
		}
		
		// update all data in player and gui
		protected function updateData():void
		{
			// parse xml and add data into list
			var children:XMLList = dataXML.children();
			var dataProv:DataProvider = new DataProvider();
			
			arrayRadio1 = arrayRadio2 = null;
			arrayRadio1 = new Array();
			arrayRadio2 = new Array();
			
			for (var i:Number = 0; i < children.length(); i++)
			{
				var obj:Object = new Object();
				obj.label = children[i].attribute("date") + "  " + children[i].attribute("name") + "   " + children[i].attribute("length_raw");
				obj.name = children[i].attribute("name");
				obj.comment = children[i].attribute("comment");
				obj.date = children[i].attribute("date");
				obj.time = children[i].attribute("time");
				obj.radio = children[i].attribute("radio");
				obj.audio = children[i].attribute("audio");
				obj.length_raw = children[i].attribute("length_raw");
				obj.length_secs = children[i].attribute("length_secs");
				
				if (radioType == children[i].attribute("radio"))
					dataProv.addItem(obj);
					
				if (children[i].attribute("radio") == "Тарантайка дэйли")
					arrayRadio1.push(obj);
				else if (children[i].attribute("radio") == "Две жизни спустя")
					arrayRadio2.push(obj);
			}
			
			compoList.list.dataProvider = dataProv;
			//trace(arrayRadio1);
			//trace(arrayRadio2);
			
			// prevent play error at startup
			if (firstRun)
			{
				listItemClickHandler(new ListEvent("itemClick", false, false, -1, -1, 0, arrayRadio1[0]));
				if (soundIsPlaying)
				{
					soundPausePosition = soundChannel.position;
					soundChannel.stop();
					soundIsPlaying = false;
					soundIsPaused = true;
				}
				
				firstRun = false;
			}
		}
		
		protected function updateImages(compoName:String, compoComment:String)
		{
			var children:XMLList = dataXML.children();
			var dataProv:DataProvider = new DataProvider();
			
			imageCurrentIndex = 0;
			var arrayLoaded:Boolean = false;
			
			for (var i:Number = 0; i < children.length(); i++)
			{
				if (compoName != children[i].attribute("name") &&
					compoComment != children[i].attribute("comment"))
					continue;
				
				images = new Array();
				var imageNodes = children[i].children();
				
				if (imageNodes.length() == 0)
				{
					hasImages = false;
					break;
				}
				hasImages = true;
				
				for (var j:Number = 0; j < imageNodes.length(); j++)
				{
					obj = new Object();
					obj.id = imageNodes[j].attribute("id");
					obj.compo_id = imageNodes[j].attribute("compo_id");
					obj.time = imageNodes[j].attribute("time");
					obj.image = imageNodes[j].attribute("image");
					obj.time_secs = imageNodes[j].attribute("time_secs");
					images.push(obj);
				}
				
				var obj = new Object();
				obj.id = 999999;
				obj.compo_id = imageNodes[0].attribute("compo_id");
				obj.time = "9999:9999";
				obj.image = "";
				obj.time_secs = 999999;
				images.push(obj);
				
				arrayLoaded = true;
				break;
			}
			
			if (arrayLoaded)
				images.sortOn("time_secs", Array.NUMERIC);
		}
		
		function soundChannelSoundCompleteHandler(event:Event):void
		{
			soundIsPlaying = false;
			soundChannel = soundObject.play(0, 0, soundTrans);
			soundChannel.stop();
			
			soundIsPaused = false;
			soundPausePosition = 0;
		}
	}
}
__________________
Жить хорошо, когда вокруг столько интересного....