Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Plasound & image.show 
:(
    Опции темы
SlaUr
Дата 10.10.2003, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Проблема такая:

Image1.Show
PlaySound('click1',h11,SND_Pesourse) //Проигрываем звук из ресурса
Image1.Hide


Картинка не появляется , Если убрать Image1.Hide Картинка появляется после проигрывания звука . Как это побороть?
Нужно Показывать картинку пока проигрывается звук.

Заранее спасибо.
PM MAIL   Вверх
Cashey
Дата 10.10.2003, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Только через внешнюю активацию, вот пример через таймер:
Код
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Show;
timer1.Enabled := true;
timer1.Interval := 200;
form1.mediaplayer1.Play;
Image1.Hide;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Show;
end;

Причем конструкция должна быть именно такая. Почему? Не вникал, видать он блокирует св-во Visible.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
p0s0l
Дата 10.10.2003, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Cделай так:

Image1.Show
Image1.Refresh; // или Update
PlaySound('click1',h11,SND_Pesourse) //Проигрываем звук из ресурса
Image1.Hide



--------------------
С уважением, г-н Посол.
PM   Вверх
Cashey
Дата 10.10.2003, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



p0s0l это было первое, что я попробовал, он тогда мегает, картинкой, на секунду и исчезает.
PS кстати, прикольно он (image) не виден, но Visible = true, смотри:
Код
begin
image1.Show;
if image1.Visible then
form1.mediaplayer1.Play;
Image1.Hide;
end;

но музыка играет.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
<Spawn>
Дата 10.10.2003, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



попробуй так:
Код
Image1.Show;
Application.ProcessMessages;
PlaySound('click1',h11,SND_Pesourse); //Проигрываем звук из ресурса
Image1.Hide;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Cashey
Дата 10.10.2003, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



<Spawn> неужели так трудно проверить перед тем как обнародовать?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
p0s0l
Дата 10.10.2003, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Странно, Cashey, что у меня с Refresh'oм или Update'ом почему-то без миганий...
Кстати, ты вместо PlaySound используешь медиаплаер...
PlaySound - синхронный, а MediaPlayer ? Никогда им не пользовался...
Щас попробую. Если он асинхронный, то тогда понятное дело, картинка мигнет на долю секунды и обратно исчезнет...



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 10.10.2003, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Ну да, так и есть - MediaPlayer асинхронный. Из-за этого у тебя картинка и исчезает сразу,Cashey...
А способ <Spawn>'а тоже рабочий. Так что, Cashey, будь внимательнее в следующий раз.
Если бы в PlaySound стоял флаг SND_ASYNC, тогда бы можно было вместо PlaySound'а использовать MediaPlayer. Или же надо дожидаться, пока проиграется звук на MediaPlayer'е, а потом уже делать Hide...



--------------------
С уважением, г-н Посол.
PM   Вверх
Cashey
Дата 13.10.2003, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



А что за PlaySound такой? Я хелп посмотрел, но там даже не сказано в каком он модуле сидит.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Cashey
Дата 13.10.2003, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Так ладно разобрался она из модуля mmsystem. И при флаге SND_ASYNC мигает так же как MediaPlayer (и работает только через внешний рефреш), а при флаге SND_SYNC работают все три способа (согласен был не прав), но прервать выполнение звука не удается, конструкцию
Код
PlaySound(0,0, SND_PURGE);
просто не удается вызвать, так что если требуется проиграть длинную мелодию то.....


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
p0s0l
Дата 13.10.2003, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Длинная - недлинная, какая разница. SlaUr'у нужно проиграть ПОЛНОСТЬЮ звук, а потом уже скрыть картинку.
Цитата
PlaySound(0,0, SND_PURGE);
просто не удается вызвать, так что если требуется проиграть длинную мелодию то.....

А зачем ему останавливать звук ?
Если нужно останавливать звук, то тогда надо ставить SND_ASYNC.

А если звук длинный и неохото, чтобы из-за этого работа проги останавливалась, то можно сделать что-то типа:
Код
function MyPlay (Parameter : Pointer) : integer;
begin
 Form1.Image1.Show;
 Form1.Image1.Update; // Хотя это уже необязательно
 PlaySound('click1',h11,SND_Pesourse) //Проигрываем звук из ресурса
 Form1.Image1.Hide;
 Result := 0;
end;

А вызывать проигрывание будет так:
Код

var TID : Cardinal;
...
 BeginThread (nil, 0, @MyPlay, nil, 0, TID);




--------------------
С уважением, г-н Посол.
PM   Вверх
Cashey
Дата 13.10.2003, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Возможно я не правильно понял задачу, но так как ее понял я, следует, что требуется показать какой-то image (например, фото исполнителя), во время проигрывания звука (например, mp3). Только где сказано, что звук должен проигрываться обязательно полностью?. Конечно, p0s0l прав, можно поставить это дело на поток, я сам так хотел зделать, но мне показалось, что вызвать через таймер более рационально с точки зрения производительности. IMHO лучше стараться избегать потоков, там где это возможно. Но повторяю - это мое мнение и оно не обязательно справедливо.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
SlaUr
Дата 14.10.2003, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Spawn:

Image1.Show;
Application.ProcessMessages;
PlaySound('click1',h11,SND_Pesourse); //Проигрываем звук из ресурса
Image1.Hide;


Спасибо,это то что нужно


p.s. А как работает Application.ProcessMessages (может еще можно где-нибудь использовать)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1136 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.