Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Архитектура. Как правильно ее построить?   Найти похожие ветки 

 
Хаус   (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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.06 c
15-1340089952
Омлет
2012-06-19 11:12
2013.03.22
Почему FreeAndNil такой, какой он есть?


15-1346364143
Artem
2012-08-31 02:02
2013.03.22
В Visual С++ автоматическая сборка мусора?


2-1334405334
lord827
2012-04-14 16:08
2013.03.22
межпоточная защита данных


15-1338920514
Глеб
2012-06-05 22:21
2013.03.22
виндосАпи


15-1349627361
Roman_man
2012-10-07 20:29
2013.03.22
Формальный аттестат и Веб-Мани. Кипер Лайт