Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизАрхитектура. Как правильно ее построить? Найти похожие ветки
← →
Хаус (2012-03-23 19:26) [0]для работы со звуком, хотя это может распространяться и на другие системы.
и так, допустим звук сделан на основе BASS.
есть класс TBass, оболочка над BASS, синглетон. имеет метод Play(Stream: HSTREAM)
есть класс TSound содержит только идентификатор потока, в методах Play вызывает
begin
Bass.Play(Stream);
end;
дальше вижу только 2 реализации работы с несколькими звуками одновременно:
// 1й вариант
var
Sound_1: TSound;
Sound_2: TSound;
begin
Sound_1:= TSound.Create;
Sound_1.Load("piu_piu.ogg");
Sound_1.Play;
Sound_2:= TSound.Create;
Sound_2.Load("scream.ogg");
Sound_2.Play;
end;
минус в куче переменных
х х х
SoundManager синглетон, содержит список TSound,
// 2й вариант
begin
// Загружаем и даем имя
SoundManager.Load("piu_piu.ogg", "sound_1");
SoundManager.Play("sound_1");
SoundManager.Load("scream.ogg", "sound_2");
SoundManager.Play("sound_2");
end;
минус в постоянном поиске нужного звука по имени, это сбавит скорость? хотя сомневаюсь
х х х
чувствую, умные люди используют какой-нибудь паттерн для этого, как он называется?
что в архитектуре не правильного? использование синглетона в классе? класс TSound?
← →
RWolf © (2012-03-23 20:08) [1]
> минус в куче переменных
массив же.
← →
Kerk © (2012-03-23 20:11) [2]Почему для таких случаев (если реально часто нужно) не сделать class-функцию? Типа:
TSound.Play("scream.ogg");
← →
Хаус (2012-03-23 20:25) [3]
> RWolf © (23.03.12 20:08) [1]
>
>
> > минус в куче переменных
>
> массив же.
ну и как различать по именам, это и есть 2-й случай
> Kerk © (23.03.12 20:11) [2]
> TSound.Play("scream.ogg");
а у меня что?
← →
Kerk © (2012-03-23 20:43) [4]Если ты не видишь разницы, то я не знаю как её ещё объяснить.
← →
RWolf © (2012-03-23 20:45) [5]
> ну и как различать по именам, это и есть 2-й случай
ничего общего.
Sound[idxScream].Play и SoundManager.Play("sound_2") это как бы совсем разные вещи.
← →
Хаус (2012-03-23 22:39) [6]
> Kerk © (23.03.12 20:43) [4]
>
> Если ты не видишь разницы, то я не знаю как её ещё объяснить.
>
а где параметр уникальности звука?
> RWolf © (23.03.12 20:45) [5]
>
>
> > ну и как различать по именам, это и есть 2-й случай
>
> ничего общего.
> Sound[idxScream].Play и SoundManager.Play("sound_2") это
> как бы совсем разные вещи.
да ладно
SoundManager.Play(idxScream)
← →
RWolf © (2012-03-24 04:23) [7]
> да ладно
> SoundManager.Play(idxScream)
ну и где тут теперь поиск звука по имени?
← →
Хаус (2012-03-24 12:58) [8]
> RWolf © (24.03.12 04:23) [7]
а если у нас 10 звуков, тогда что? запоминать их имена?
← →
RWolf © (2012-03-24 13:08) [9]
> [8]
обращение к элементам массива происходит по их индексам, а не по именам.
← →
Хаус (2012-03-24 14:12) [10]
> RWolf © (24.03.12 13:08) [9]
>
>
> > [8]
>
> обращение к элементам массива происходит по их индексам,
> а не по именам.
ну дык это понятно.
как вы будете различать один звук от другого? через имя переменной?
← →
RWolf © (2012-03-24 14:20) [11]
> [10]const
idxPiuPiu = 0;
idxScream = 1;
…
илиtype
TSoundEnum = (idxPiuPiu, idxScream, …);
что фактически то же самое.
← →
Хаус (2012-03-24 14:22) [12]
> RWolf © (24.03.12 14:20) [11]
дык это 1-й вариант, переполненное пространство имен
← →
Inovet © (2012-03-24 14:41) [13]> [12] Хаус (24.03.12 14:22)
Ты сам понимаешь, что ты хочешь? Из рассуждений выше я этого не понял.
← →
Хаус (2012-03-24 15:41) [14]
> Inovet © (24.03.12 14:41) [13]
>
> > [12] Хаус (24.03.12 14:22)
>
> Ты сам понимаешь, что ты хочешь?
я хочу удобную архитектуру для работы со звуками, разве не понятно?
← →
RWolf © (2012-03-24 17:03) [15]
> [12]
как наличие перечислимого типа может переполнить пространство имён, и как этот факт может чему-то помешать?
← →
Хаус (2012-03-24 19:08) [16]А если 200 звуков, которые динамичны, то нужны одни, то другие.
Еще вариант, появляться новые.
← →
Inovet © (2012-03-24 19:11) [17]> [16] Хаус (24.03.12 19:08)
> Еще вариант, появляться новые.
Появились. И теперь... что теперь?
← →
Хаус (2012-03-24 19:14) [18]
> Inovet © (24.03.12 19:11) [17]
появились через плагин.
а у нас нет имени для таких, что делать?
← →
Inovet © (2012-03-24 19:19) [19]> [18] Хаус (24.03.12 19:14)
> появились через плагин.
> а у нас нет имени для таких, что делать?
Плагин пусть именует, если проблема в имени.
← →
Хаус (2012-03-24 19:22) [20]Сам создает имена и заносит их в тип энум? как это?
← →
Inovet © (2012-03-24 19:45) [21]> [20] Хаус (24.03.12 19:22)
> Сам создает имена и заносит их в тип энум? как это?
Так имена или ИД?
Совершенно не понятно, что тебе надо. Смысл угадывать?
← →
QAZ (2012-03-24 20:27) [22]что тут за пурга происходит вообще?
← →
Хаус (2012-03-24 20:33) [23]
> Inovet © (24.03.12 19:45) [21]
имена индефикаторов
>
const
idxPiuPiu = 0;
idxScream = 1;
Inovet © (24.03.12 19:45) [21]
← →
RWolf © (2012-03-24 20:39) [24]как программа проиграет звук, если ей о нём ничего не известно?
плагин его загрузил, плагин пусть его и играет.
← →
Inovet © (2012-03-24 20:40) [25]> [23] Хаус (24.03.12 20:33)
> имена индефикаторов
Плагин пусть именует у себя а в хост отдаёт ИД по соглашению. Например, получить первый свободный, вернуть количество.
← →
Хаус (2012-03-25 19:09) [26]
> RWolf © (24.03.12 20:39) [24]
>
> как программа проиграет звук, если ей о нём ничего не известно?
>
вот именно, не возможно создать программно именнованую переменную.
вы предлагаете создавать переменные с именами звуков, это 1-й предложенный мною вариант, портиться пространство имен.
тогда уж 2й вариант. блин, 100 раз приходиться объснять
← →
Inovet © (2012-03-25 19:27) [27]> [26] Хаус (25.03.12 19:09)
> 100 раз приходиться объснять
Ещё раз. Не понятно что ты там строишь, чтобы ответить что-либо определённое.
← →
Хаус (2012-03-25 19:30) [28]игра с 1000 звуков, нужно их как-то динамично проигрывать,
поэтому важна архитектура.
← →
Inovet © (2012-03-25 19:33) [29]> [28] Хаус (25.03.12 19:30)
> игра с 1000 звуков, нужно их как-то динамично проигрывать
Куда они запуздырены? Кто их проигрывает? Надо ли видеть их названия? Может это просто схемы как в Виндоус? и т.п..
← →
QAZ (2012-03-25 21:11) [30]
> портиться пространство имен.
какое нафиг пространство имен?
> 100 раз приходиться объснять
аты ничего и не объяснял,просто бредил какимито патернами...
← →
Хаус (2012-03-25 22:14) [31]
> Куда они запуздырены?
в программу ко
> Кто их проигрывает?
либа BASS, а ты подумал про компоненты? которыми тут даже не пахнет
> Надо ли видеть их названия?
как ты отличишь тогда один звук от другого?
> Может это просто схемы как в Виндоус? и т.п..
я откуда знаю
> какое нафиг пространство имен?
Википедию читай
> аты ничего и не объяснял,просто бредил какимито патернами.
> ..
ты можешь выйти из ветки "какимито патернами." м-де
читай лучше
← →
Inovet © (2012-03-25 22:18) [32]> [31] Хаус (25.03.12 22:14)
Ты снова не выдал тайну.
← →
RWolf © (2012-03-25 23:27) [33]
> вы предлагаете создавать переменные с именами звуков
нет, не предлагаю.
Переменная всего одна — массив. Программа обращается к звукам как к элементам массива, индексы задаются константами.
Константы — это не переменные, перечисление — тоже; будет их в программе сто или сто тысяч — ничего не меняет.
Про «замусоривание» вообще непонятно. Тысячи констант из юнита Windows кому-нибудь мешают?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.079 c