Saytda musiqinin nizamsız (shuffle) oxunması – MP3 Shuffle playlist

Salamlar, Actionscript-də pleylist var, lakin istəyirəm ki, mahnılar nizamsız olaraq ardıcıl olmadan oxunsun, yəni next düyməsini basdıqda sonrakı yox, hər hansı bir mahnı gəlsin, kod isə belədir:

package com.Ub.Music
{
	import caurina.transitions.properties.ColorShortcuts;
	import caurina.transitions.Tweener;
	import com.Ub.utils.ScrollBar;
	import com.Ub.Music.playlist.Track;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	/**
	 * ...
	 * @author Umbra
	 */
	public class Playlist extends MusicCore
	{
		/*
		* The Playlist class displays and controls playlist panel in MusicModule
		*/
		
		private var songArray:Array;
		private var songList:XMLList;
		
		private var trackContainer:Sprite;
		private var contMask:Sprite;
		private var scrollbar:ScrollBar;
		private var colorOut:uint = 0xffffff;
		private var colorOver:uint = 0xff9966;
		
		public static const TRACK_CLICKED:String = "trackClicked";
		
		
		public function Playlist() 
		{
			super();
			
			
		}
	
		override protected function init(e:Event):void 
		{
			ColorShortcuts.init();
			removeEventListener(Event.ADDED_TO_STAGE, init);
			trackContainer = new Sprite();
			
			this.addChild(trackContainer);
			
			makeMaskAndScroll();
			
			colorOut = [email protected];
			colorOver = [email protected];
			
			
			
			
		}
		/*CUSTOM FUNCTION CALLED WHEN PLAYLIST IN ON*/
		override public function PLAYLIST_ON():void {
			this._reveal();
			updatePlaylist();
			
		}
		
		override protected function _reveal():void 
		{
			this.alpha = 0
			visible = true;
			Tweener.addTween(this, {delay:1, time:1, alpha:1 } );
		}
		
		private function updatePlaylist()
		{
			clearPlaylist();

					songList =  _xml.Album[_currentAlbum].song;
					songArray = new Array();
					var tfHeight:Number=0;
					for (var i:int = 0; i < songList.length(); i++) 
					{
						var track = new Track(songList[i][email protected], i);
						track.x = 15;
						track.y = track.height * i + 8;
						trackContainer.addChild(track);
						tfHeight +=  track.height;

						
						track._selected = false;
						track._discolorTrack();
						track.addEventListener(MouseEvent.CLICK, onTrackClick);
						
						
						songArray.push(track);
						
						track._showTitles();
					}
					trackContainer.height = tfHeight
					if ( scrollbar) scrollbar.init();
					
					(songArray[_currentSong] as Track)._selected = true;
					(songArray[_currentSong] as Track)._colorTrack();
			
		}
		
		private function onTrackClick(e:MouseEvent):void 
		{
			//PREV TRACK
			Tweener.addTween(songArray[currentSong], {_color:colorOut,time:0.3 } );
			(songArray[_currentSong] as Track)._selected = false;
			
			//NEXT TRACK
			_currentSong = (e.currentTarget as Track)._id
			this.dispatchEvent(new Event(TRACK_CLICKED));
			
			Tweener.addTween(songArray[currentSong], { _color:colorOver, time:0.3 } );
			(songArray[_currentSong] as Track)._selected = true;
			
			
		}
		
	
		
		private function makeMaskAndScroll():void 
		{
			var bgSpr:Sprite = new Sprite();
			bgSpr.graphics.beginFill(0x000000,0.8);
			bgSpr.graphics.drawRoundRectComplex(2, 2, 196, 196, 4, 4, 4, 4);
			bgSpr.graphics.endFill();
			this.addChildAt(bgSpr,0);
			contMask = new Sprite();
			contMask.graphics.beginFill(0x00ff00);
			contMask.graphics.drawRect(15, 10, 180, 185);
			contMask.graphics.endFill();
			this.addChild(contMask);
			
			trackContainer.mask = contMask;
			
			scrollbar = new ScrollBar();
			scrollbar.contentMask = contMask;
			scrollbar.content = trackContainer;
			scrollbar.x = 6;
			scrollbar.y = 10;
			
			this.addChild(scrollbar);
			scrollbar.init();
		}
		
		
		private function clearPlaylist():void 
		{
			for (var i:int =  trackContainer.numChildren-1; i >= 0; i--) 
			{
				trackContainer.removeChildAt(i)
			}
		}
		
		
		
		
	}

}

Bilən varmı, hansı hissədə nə dəyişiklik etməliyəm? Bir çox forumlarda sual verdim, dolayı yolla izah etdilər, anlamadım.

Bilən olmasa belə, mənə bunu harda düzətməyi məsləhət görə bilərsiniz? Yəni agentlik, developer və s.

Öncədən hamıya təşəkkürlər.


Sualı yadda saxla
Kateqoriya: Sual . , , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (3 cavab var)

(17:05, 18/06/2012 ) #16782

Belə koddan demək çətindir, faylın özünü görmədən. Amma siz belə edin, private function onTrackClick(e:MouseEvent):void funksiyasında time:0.3-ü time:0.6 və ya başqa qiymətlərlə əvəz edin əllə, görün o hər hansı dəyişiklik verəcəkmi? Yəni məsələn 0.6 etdikdə növbətiyə yox, 2 daha sonrakı mahnıya keçsə deməli qanunauyğunluq tapmış olarıq və o halda kiçik bir funksiya yazıb qoyaram burda, qoşarsız bu koda, nəticədə siz deyən təsadüfi seçim imkanı yaranar.
Alınmasa da fla faylını qoyarsız bura yükləyib üstündə həll edərik.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (13:46, 21/06/2012 ) #16980

    Təşəkkürlər Elvin, onu yoxladım alınmadı, kirupa-da demişdilər ki, array-la bağlı yeni function əlavə etməlisən, mənim AS-lə bağlı anlayışım yoxdur, bir-iki cəhd elədim alınmadı burda bütöv komponentlər var, index.html faylı “deploy” qovluğundadır, playlist.as isə src\com\Ub\Music-dədir. Öncədən təşəkkürlər.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(23:30, 25/06/2012 ) #17119

Təəssüf ki proyekt böyük olduğundan bunu həll etmək sual-cavab saytlarının yox, freelancerlərin işidir 🙂 Amma yenə də imkan tapsam baxaram main.fla faylının strukturuna.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

hqart cavab verdi - veb hosting - 20-30 min ziyarətçi (11 saat əvvəl)

Erro0010 cavab verdi - Bakinternetdə bir xətlə iki internet xətti (22 saat əvvəl)

Erro0010 cavab verdi - Aliexpress sifarişləri hələ də gəlir? (22 saat əvvəl)

Erro0010 cavab verdi - point blank parolu unutmuşam (23 saat əvvəl)

Erro0010 cavab verdi - Xaricdən telefon gətirmək (23 saat əvvəl)

Erro0010 cavab verdi - Alibaba, Aliexpressden alib, Azerbaycanda mali nece satmaq olar (23 saat əvvəl)

Erro0010 cavab verdi - Aliexpresdən 50-dən çox saat və ya köynək almaq olar? (23 saat əvvəl)

Software Developer cavab verdi - Mənə Russiyadan playstation 5 hediye gonderibler ona rusum odemeliyem? (1 gün əvvəl)

Software Developer cavab verdi - Kriptovalyuta Ripple (2 gün əvvəl)

Software Developer cavab verdi - Pay paldan necə pul çıxarda bilərəm (3 gün əvvəl)

Hesen Bayramov cavab verdi - Kriptovalyuta Ripple (3 gün əvvəl)

Tamerlan Mammadov cavab verdi - Kriptovalyuta Ripple (3 gün əvvəl)

Samirdd cavab verdi - Payoneer qeydiyyat kodu gelmir (4 gün əvvəl)

Ismayıl Qurbanov cavab verdi - Poctla gonderis (4 gün əvvəl)

Ismayıl Qurbanov cavab verdi - Alibaba, Aliexpressden alib, Azerbaycanda mali nece satmaq olar (4 gün əvvəl)

Software Developer - 612 xal

E. Hacı - 604 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 432 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 22370 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2020