tag:blogger.com,1999:blog-33057655.post4692849101683942435..comments2022-03-02T02:08:08.083+03:00Comments on Разное от программиста...: Delphi XE3.FireMonkey: Фиксим рваную анимациюKazantsev Alexeyhttp://www.blogger.com/profile/14086309924481739588noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-33057655.post-73475778103004419412012-10-10T17:44:25.605+04:002012-10-10T17:44:25.605+04:00Там алгоритм такой, что он совсем не гарантирует у...Там алгоритм такой, что он совсем не гарантирует установленное количество кадров. Все зависит от того насколько быстро будет выполняться каждый шаг анимации.Kazantsev Alexeyhttps://www.blogger.com/profile/14086309924481739588noreply@blogger.comtag:blogger.com,1999:blog-33057655.post-24560940497632525572012-10-10T17:16:19.016+04:002012-10-10T17:16:19.016+04:00Спасибо, я попробую. Кстати просмотрев код TAnithr...Спасибо, я попробую. Кстати просмотрев код TAnithread понял что плавность можно поднять повысив значение глобальной переменной FMX.Types.AniFrameRate, по умолчанию там 30 кадров.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-33057655.post-43531309038470870642012-10-10T17:04:18.500+04:002012-10-10T17:04:18.500+04:00Странно. У меня качается без проблем. ОК, вот исхо...Странно. У меня качается без проблем. ОК, вот исходник:<br /><br />Unit FMX.AnimationFixer;<br /><br />//<br />// Animation fixer<br />// Copyright (c) 2012 Kazantsev Alexey (kazantsev.alexey@mail.ru)<br />//<br />// Published under the MIT license<br />//<br /><br />Interface<br /><br />Implementation<br /><br />Uses<br /><br /> System.Diagnostics, FMX.Types, FMX.Platform;<br /><br />Type<br /><br /> //<br /> TAnimationFixer = Class(TInterfacedObject, IFMXTimerService)<br /><br /> Strict Private<br /><br /> FOldService : IFMXTimerService;<br /> FStopwatch : TStopwatch;<br /><br /> Public<br /><br /> Class Procedure Install; Static;<br /><br /> Constructor Create(Const AOldService : IFMXTimerService);<br /><br /> Function CreateTimer(AInterval : Integer; ATimerFunc : TTimerProc) : TFmxHandle;<br /> Function DestroyTimer(ATimer : TFmxHandle) : Boolean;<br /> Function GetTick : Extended;<br /><br /> End;<br /> //<br /><br />{ TAnimationFixer }<br /><br />//<br />Class Procedure TAnimationFixer.Install;<br />Var<br /><br /> OldService : IFMXTimerService;<br /><br />Begin<br /><br /> OldService := IFMXTimerService(TPlatformServices.Current.GetPlatformService(IFMXTimerService));<br /><br /> Assert(Assigned(OldService));<br /><br /> TPlatformServices.Current.RemovePlatformService(IFMXTimerService);<br /> TPlatformServices.Current.AddPlatformService(IFMXTimerService, TAnimationFixer.Create(OldService) As IFMXTimerService);<br /><br />End;<br />//<br /><br />//<br />Constructor TAnimationFixer.Create(Const AOldService : IFMXTimerService);<br />Begin<br /><br /> Inherited Create;<br /><br /> FOldService := AOldService;<br /> FStopwatch := TStopwatch.StartNew;<br /><br />End;<br />//<br /><br />//<br />Function TAnimationFixer.CreateTimer(AInterval : Integer; ATimerFunc : TTimerProc) : TFmxHandle;<br />Begin<br /><br /> Result := FOldService.CreateTimer(AInterval, ATimerFunc);<br /><br />End;<br />//<br /><br />//<br />Function TAnimationFixer.DestroyTimer(ATimer : TFmxHandle) : Boolean;<br />Begin<br /><br /> Result := FOldService.DestroyTimer(ATimer);<br /><br />End;<br />//<br /><br />//<br />Function TAnimationFixer.GetTick : Extended;<br />Begin<br /><br /> If FStopwatch.ElapsedTicks > TStopwatch.Frequency * 2 Then<br /> FStopwatch := TStopwatch.StartNew;<br /><br /> Result := FStopwatch.ElapsedTicks / TStopwatch.Frequency;<br /><br />End;<br />//<br /><br />Initialization<br /><br /> TAnimationFixer.Install;<br /><br />End.Kazantsev Alexeyhttps://www.blogger.com/profile/14086309924481739588noreply@blogger.comtag:blogger.com,1999:blog-33057655.post-70803442387468082372012-10-10T16:56:12.434+04:002012-10-10T16:56:12.434+04:00Алексей, ссылка не работает вообще никак, хотелось...Алексей, ссылка не работает вообще никак, хотелось бы про фикс по подробнее. У самого проблемы с рваной анимацией.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-33057655.post-26444088459708669442012-10-04T19:28:26.303+04:002012-10-04T19:28:26.303+04:00Если анимируется что-то тяжелое этот фикс не помож...Если анимируется что-то тяжелое этот фикс не поможет, он лишь избавляет от ошибки вычисления момента следующего шага анимации при большом аптайме системы.Kazantsev Alexeyhttps://www.blogger.com/profile/14086309924481739588noreply@blogger.comtag:blogger.com,1999:blog-33057655.post-62373115850830177802012-10-04T18:47:31.451+04:002012-10-04T18:47:31.451+04:00пробовал фикс с Tfloatanomation - как дергалось - ...пробовал фикс с Tfloatanomation - как дергалось - так и дергается<br />добавлял в uses формыEvil_Demonhttps://www.blogger.com/profile/01531631744004965800noreply@blogger.comtag:blogger.com,1999:blog-33057655.post-3467280346974626242012-10-04T18:30:21.199+04:002012-10-04T18:30:21.199+04:00Если не качается пробуйте скопировать ссылку в адр...Если не качается пробуйте скопировать ссылку в адресную строку браузера (т.е. не кликайте по ней, а копируйте и переходите, Хрому это помогло). Если и так не получилось, добавьте www (раньше это работало). Я проверил своей Оперой, файл на месте и качается.Kazantsev Alexeyhttps://www.blogger.com/profile/14086309924481739588noreply@blogger.comtag:blogger.com,1999:blog-33057655.post-38139359044588262392012-10-04T17:32:20.160+04:002012-10-04T17:32:20.160+04:00Где скачать сам файл? Ссылка нерабочая.Где скачать сам файл? Ссылка нерабочая.Evil_Demonhttps://www.blogger.com/profile/01531631744004965800noreply@blogger.comtag:blogger.com,1999:blog-33057655.post-87477880898975258892012-10-04T17:24:56.882+04:002012-10-04T17:24:56.882+04:00Где найти файл? по ссылке его нет.Где найти файл? по ссылке его нет.Anonymousnoreply@blogger.com