Sascha Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 Делаю так: procedure TForm1.MoveButtonClick(Sender: TObject); const Time = 1.0; begin var P := Image1.Position.Point + TPointF.Create(200, 100); TAnimator.AnimateFloat(Image1, 'Position.X', P.X, Time); TAnimator.AnimateFloat(Image1, 'Position.Y', P.Y, Time); end; Как одновременно изменить Position.X и Position.Y, чтобы использовать их в AnimateFloatWait? Проблема в том, что после анимации идет важная процедура, которая выполняется, не дожидаясь анимации. В потоке тоже глюки. Цитата Ссылка на комментарий
0 Dmitry_4501 Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 (изменено) Попробуйте библиотеку компонентов FGX, она содержит компонент TFgPositionAnimation, созданный для анимации свойств типа TPosition. Я сам пробовал использовать этот компонент - работал нормально. Изменено 1 декабря, 2021 пользователем Дмитрий Потапов Sascha 1 Цитата Ссылка на комментарий
0 Sascha Опубликовано 1 декабря, 2021 Автор Поделиться Опубликовано 1 декабря, 2021 13 минут назад, Дмитрий Потапов сказал: Попробуйте библиотеку компонентов FGX, она содержит компонент TFgPositionAnimation, созданный для анимации свойств типа TPosition. Я сам пробовал использовать этот компонент - работал нормально. Она заброшена автором. Для Delphi 10.4.1 ее можно установить? Цитата Ссылка на комментарий
0 Sascha Опубликовано 1 декабря, 2021 Автор Поделиться Опубликовано 1 декабря, 2021 на гитхабе нашел два продолжения проекта: https://github.com/ms301/fgx-firemonkey https://github.com/theilgaz/FGX Вы каким пользуетесь? Цитата Ссылка на комментарий
0 Dmitry_4501 Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 1 час назад, Sascha сказал: Она заброшена автором. Для Delphi 10.4.1 ее можно установить? Почему нет? В случае возникновения ошибок всегда можно их исправить самостоятельно. 1 час назад, Sascha сказал: на гитхабе нашел два продолжения проекта: https://github.com/ms301/fgx-firemonkey https://github.com/theilgaz/FGX Вы каким пользуетесь? Сейчас никаким. Поначалу было нужно, сейчас не использую FireMonkey почти нигде. Цитата Ссылка на комментарий
0 Sascha Опубликовано 1 декабря, 2021 Автор Поделиться Опубликовано 1 декабря, 2021 2 часа назад, Дмитрий Потапов сказал: Попробуйте библиотеку компонентов FGX, она содержит компонент TFgPositionAnimation, созданный для анимации свойств типа TPosition. Я сам пробовал использовать этот компонент - работал нормально. Попробовал. Не могу заставить запуститься анимацию. Метода типа Start нет. Думал, просто Enabled включу fgPositionAnimation1.StartValue := Image1.Position; fgPositionAnimation1.StopValue.X := Image1.Position.X + 200; fgPositionAnimation1.StopValue.Y := Image1.Position.Y + 200; fgPositionAnimation1.Duration := 1; fgPositionAnimation1.PropertyName := 'Position'; fgPositionAnimation1.Enabled := True; Цитата Ссылка на комментарий
0 slav_z Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 я сам делаю так: анимирую одно свойство, а все остальные (любые которые надо дополнительно) на событие OnProcess у анимации... Sascha 1 Цитата Ссылка на комментарий
0 OnePeople Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 13 часов назад, Sascha сказал: Как одновременно изменить Position.X и Position.Y, чтобы использовать их в AnimateFloatWait? TAnimator.AnimateFloat(Image1, 'Position.X', P.X, Time); TAnimator.AnimateFloatWait(Image1, 'Position.Y', P.Y, Time, Timewait); Не проверял уже давно, но в андроид не работало, в Windows точно работает, я делаю так, в особых случаях Внимание костыль! TTask.Run(procedure() begin TThread.Synchronize(nil, procedure() begin TAnimator.AnimateFloat(Image1, 'Position.X', P.X, Time); TAnimator.AnimateFloat(Image1, 'Position.Y', P.Y, Time); end); sleep(Time); TThread.Synchronize(nil, procedure() begin после анимации идет важная процедура) end); end); Цитата Ссылка на комментарий
0 Sascha Опубликовано 1 декабря, 2021 Автор Поделиться Опубликовано 1 декабря, 2021 да, AnimateFloatWait в Андроид не работает, потому что смотришь в исходники - а там Application.ProcessMessages Испанский стыд Цитата Ссылка на комментарий
0 krapotkin Опубликовано 1 декабря, 2021 Поделиться Опубликовано 1 декабря, 2021 никто не отменял классику - свой таймер и расчет координат руками, без RTTI и универсальности.. TAnimator собсно довольно простая штука Цитата Ссылка на комментарий
Вопрос
Sascha
Делаю так:
procedure TForm1.MoveButtonClick(Sender: TObject); const Time = 1.0; begin var P := Image1.Position.Point + TPointF.Create(200, 100); TAnimator.AnimateFloat(Image1, 'Position.X', P.X, Time); TAnimator.AnimateFloat(Image1, 'Position.Y', P.Y, Time); end;
Как одновременно изменить Position.X и Position.Y, чтобы использовать их в AnimateFloatWait?
Проблема в том, что после анимации идет важная процедура, которая выполняется, не дожидаясь анимации. В потоке тоже глюки.
Ссылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.