Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться с потоком [D6, XP]


Страницы:   1 2 3

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(какаятотам ботва);


ты бездумно впендюрил, увидев его на бескрайних просторах Тырнета.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо