Показать сообщение отдельно
Старый 21.08.2011, 21:04   #2
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Как можно проще управлять сразу несколькими звуками?

Писал большой ответ, но в момент отправки упала булка, схоронился тока код:
Type TSomeChannel
	Global MAP:Tmap = CreateMap()
	
	Field Channel:TChannel
	Field Sound:TSound
	Field MainVolume:String
	
	Function Load:TSomeChannel(Source:String,MainVolume:Float,label:String)
		Local somelist:TList = TList(MapValueForKey(MAP,label))
		If(somelist = Null)
			somelist = CreateList();
			MapInsert MAP,label,Somelist
		EndIf 
		
		Local S:TSomeChannel = New TSomeChannel
		S.Sound = LoadSound(Source)
		S.Channel = CueSound(S.Sound)
		S.MainVolume = MainVolume
		SetChannelVolume(S.Channel,MainVolume)
		ListAddLast Somelist,S
		Return S
	End Function 
	
	Function PlayRand(label:String)
		Local list:TList = MapValueForKey(MAP,label)
		If(list = Null) Return
		
		Local R:Int = Rand(1,CountList(list))
		Local K:Int = 0
		
		For Local S:TSomeChannel = EachIn list
			K:+1
			If(K = R)
				ResumeChannel S.Channel
				Exit 
			EndIf 
		Next 
	End Function 
End Type
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
xmarat (22.08.2011)