|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.05.2024, 14:52 | #1 |
Регистрация: 16.01.2020
Сообщений: 7
|
Как вызвать функцию?
Подскажите, плиз, как зациклить аудио файл этой функцией? Как ее правильно вызвать?
(Это компоненты библиотеки LMDTools) Код:
WaveList_Logo.Items[0].Wave.Play; // вызов одиночного звука из wav-листа WaveList_Logo.Items[1].Wave.PlaySound(?); // думаю как-то так надо зациклить, но какие флаги писать? Последний раз редактировалось gkc; 14.05.2024 в 17:20. |
14.05.2024, 17:23 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,351
|
Библиотекой не пользовался, но по приведенному коду предположу "WaveList_Logo.Items[1].Wave.PlaySound(sdLoop);".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
14.05.2024, 18:58 | #3 | |
Регистрация: 16.01.2020
Сообщений: 7
|
Цитата:
[Error] Logo.pas(5749): Undeclared identifier: 'sdLoop' *У меня был этот код, пару лет назад в каком то проекте, но он затерялся( Насколько помню, там в скобках были 2 флага, типа: "SND_ASYNC OR SND_LOOP" Но я все счас перепробовал - нифига (- Последний раз редактировалось gkc; 14.05.2024 в 19:00. |
|
14.05.2024, 21:00 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,531
|
Цитата:
какой-то из модулей перечисленных в uses описания данной функции (тот где описан тип TLMDSndPlayMode)
программа — запись алгоритма на языке понятном транслятору
|
|
15.05.2024, 00:53 | #5 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,896
|
|
15.05.2024, 06:09 | #6 | |
Регистрация: 16.01.2020
Сообщений: 7
|
Цитата:
добавил unit lmdwave и ошибка ушла! Сбило с толку что функ. Wave.Play; работала (она в том же модуле описана) а Wave.PlaySound(sdLoop); не работала... |
|
15.05.2024, 06:10 | #7 |
Регистрация: 16.01.2020
Сообщений: 7
|
|
19.05.2024, 09:17 | #8 |
Регистрация: 16.01.2020
Сообщений: 7
|
А как корректно сменить музыку при вызове через Loop?
Допустим я вызвал второй файл из своего листа: WaveList_Logo.Items[2].Wave.PlaySound(sdLoop); Ок, все работает, Loop отрабатывает как надо, Я хочу сменить файл, запустить третий файл: да, если я вызову так: WaveList_Logo.Items[3].Wave.PlaySound(sdLoop); Функция корректно и моментально сменит файл, при этом есстно сразу оборвет предыдущую. Это слушается не очень хорошо... Какие варианты тут есть? *Все рабочие файлы с в редакторе подготовил под Loop! 1.Я могу плавно уменьшить громкость (например через SetWaveVolume()) Сменить принулевой громкости файл и снова поднять громкость до старого значения. Но будет провал звука на несколько секунд, что тоже не айс. 2. я могу ввести в константы длительность всех своих аудио треков и отслеживать длительность текущей фонограммы в нормальном таймере. и, при окончании фонограммы (если это нужно) выбирать новую и перевызывать WaveList_Logo.Items[3].Wave.PlaySound(sdLoop); Возможно это будет работать, но смущает асинхронность и костыльность решения. Вопрос: Есть ли какие-то еще решения как отследить длину трека и "вовремя" сменить его? Возможно, можно получить какие-то данные об окончании файла от SndPlaySound? (MMSystem) какие то ей запросы в таймере посылать? Насколько я вижу она воспроизводит звук, то... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вызвать функцию(с++) | Sterben | Помощь студентам | 13 | 29.09.2015 09:01 |
Как вызвать функцию.. | Аделинкка | Общие вопросы Delphi | 10 | 21.12.2012 10:47 |
Як вызвать функцию из dll в C# ? | Dr.Pauliss | Помощь студентам | 5 | 26.09.2011 12:42 |
Вызвать функцию ассемблера из С++ | Dima88 | Помощь студентам | 3 | 11.12.2009 00:54 |
Как вызвать функцию? | blackstersl | Общие вопросы Delphi | 10 | 07.06.2009 19:22 |