![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с потоком [D6, XP]
Artem © (2008-01-25 13:21:00)Прошу помощи.
Задача: вместе с проигрыванием FLASH-ролика передвигать TrackBar.
Есть поток.
procedure TMoveBar.Execute;
begin
while not Terminated do
synchronize(movebar);
end;
procedure TMoveBar.movebar;
begin
form1.trbar.Position:=form1.flash1.CurrentFrame;
end;
В FormShow:
flash1.Movie:='e:\abc.swf';
trbar.Max:=flash1.TotalFrames;
flash1.Stop;
co:=TMoveBar.Create(true);
При нажатии на кнопку "Воспроизвести":
flash1.Play;
co.resume;
co.Priority:=tpLower;
Проигрывается один фрейм и останавливается. В чем ошибка?
DiamondShark (2008-01-25 15:54:00) [1]
> надо было еще отключать таймер при нажатии на паузу и стоп
Не. Таймер надо было выделить в дизайнере и нажать клавишу <DEL>.
Artem (2008-01-25 15:49:00) [2]ё-моё, разобрался :))) надо было еще отключать таймер при нажатии на паузу и стоп
Artem (2008-01-25 15:32:00) [3]Вот что делаю:
При нажатии на PLAY:
trbar.OnChange:=nil;
flash1.Play;
При нажатии на паузу или стоп:
flash1.Stop;
trbar.OnChange:=form1.trbarChange;
Все равно не получается. Ползунок двигается, нажимаешь паузу и начинаешь его двигать вручную, но фреймы не перемещаются....
clickmaker (2008-01-25 15:11:00) [4]Удалено модератором
Artem (2008-01-25 15:06:00) [5]
> Вопрос: что надо сделать с соотв. свойством объекта, чтобы
> он на время "забыл" об этой процедуре?
Возможно, я не знаю какой метод использовать. Понимаю, что надо как-то запретить обработку, что-то сделать false, НО не знаю КАК это сделать :)) Что изменить-то?
Логику-то я понимаю, соответствующими инструментами не обладаю...
clickmaker (2008-01-25 15:00:00) [6]
> Для тебя это очевидно, для меня нет. Допусти, что я не знаю
> как
так тут все такие. Все когда-то не знали, как.
Но логика-то элементарная должна быть.
Если абстрактно. Есть процедура. Грубо говоря, ссылка на нее является свойством объекта. Т.е., если у объекта есть эта ссылка - она выполняется. Нет - не выполняется.
Вопрос: что надо сделать с соотв. свойством объекта, чтобы он на время "забыл" об этой процедуре?
Artem (2008-01-25 14:56:00) [7]
> clickmaker
Для тебя это очевидно, для меня нет. Допусти, что я не знаю как. Ну что, сложно сказать что ли? Больше времени на намеки уйдет.
Artem (2008-01-25 14:54:00) [8]
> последний намек: обработчик события - это свойство объекта.
> Его можно назначать и убирать в любой момент
Я не знаю как. Скажи, пожалуйста.
Artem (2008-01-25 14:50:00) [9]
> Сергей М. ©
Кто, ты? Ты про кого?
clickmaker (2008-01-25 14:50:00) [10]
> [35] Artem (25.01.08 14:45)
последний намек: обработчик события - это свойство объекта.
Его можно назначать и убирать в любой момент
Сергей М. (2008-01-25 14:47:00) [11]Редкой тупости человек)
Artem (2008-01-25 14:45:00) [12]
> чтобы обработчик события не вызывался в определеный момент,
> что нужно сделать?
Подскажи, пожалуйста. Наверное, я просто не знаю. Все-таки я новичок...пока учусь.
Artem (2008-01-25 14:39:00) [13]Если в OnChange после flash1.GotoFrame(trbar.position);
возобновить воспроизведение
flash1.Play;
то тормозит ролик, заикается по таймеру каждые 59 долисекунд.
Artem (2008-01-25 14:36:00) [14]Как мне запретить вызов обработчика во время воспроизведения?
Artem (2008-01-25 14:32:00) [15]
> чтобы обработчик события не вызывался в определеный момент,
> что нужно сделать?
вот думаю какое условие задать...
clickmaker (2008-01-25 14:31:00) [16]
> У кого какие есть мысли на этот счет?
а самому подумать?
чтобы обработчик события не вызывался в определеный момент, что нужно сделать?
Artem (2008-01-25 14:28:00) [17]
> Тебе уже сказали - разбирайся с логикой возбуждения событий
> того компонента, который ты использовал.
Ладно, умный ты человек. Не знаешь - не говори.
В действительности все работает через Таймер, если интервал поставить 59. Но проблема, действительно в том, как и предположил
> clickmaker © (25.01.08 14:15) [25]
- OnChange мешает.
А мне надо бы, чтобы была возможность ручной промотки (хватаешь за тракбар и двигаешь, вместе с этим прокручивается flash). Для этого надо обрабатывать OnChange. Но они друг другу мешают!
У кого какие есть мысли на этот счет?
Сергей М. (2008-01-25 14:22:00) [18]Тебе уже сказали - разбирайся с логикой возбуждения событий того компонента, который ты использовал.
Artem (2008-01-25 14:19:00) [19]
> ни потоки ни таймеры тебе нахрен не нужны
Ну так скажи, если такой грамотный программист, чего тянешь-то?
Сергей М. (2008-01-25 14:17:00) [20]
> Я пришел за советом
Ну так и заполучи совет - ни потоки ни таймеры тебе нахрен не нужны.
> Ошибаешься на все 100%. У меня его книги нет
Да-да.
Код вида
while not Terminated do
synchronize(какаятотам ботва);
ты бездумно впендюрил, увидев его на бескрайних просторах Тырнета.