zloid
-
Постов
7 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные zloid
-
-
слабоват планшет. я на таком проце покупал по моему года три назад. попробуй на другом планшете. сейчас идут как минимум двух ядерные.
Хорошо, спишу всё на высокие требования Delphi+FMX и слабость планшета, хотя всякие игрушки на нём идут, а там не просто четыре квадратика выводятся.
Спасибо всем за ответы.
-
так у тебя тестовый планшет на интеле что ли?
Нет, ONDA Vi40
ARM Cortex-A8, Allwinner A10 1GHz
Если Ваш ответ к моему примечанию о том, что я скидываю галку, то я обновил своё сообщение. С галочкой всё проседает точно так же.
-
Ваш код на моём планшете (ONDA, разрешение 1024x768) не дал прироста в скорости, элементы всё так же впадают в транс.
Хотел уж было подвести печальный итог, что FMX тормозит на разрешениях выше 360х615, как в Вашем видео, но
протестировал на Huawei MediaPad 10, все прекрасно двигается никаких зависании
только я исправил Width -> ClientWidth и Height -> ClientHeight
Обнадёжило, у MediaPad разрешение ещё выше. Может быть у меня просто слабый планшет.
Забыл сказать: я скидываю галочку
Иначе планшет просто выдаёт огромное сообщение, что приложение не поддерживает данное устройство.
UPD: наше тестовое приложение с летающими TTExt работает и с галочкой, но скорость такая же. Но для любого другого приложения сложнее HelloWorld, галочку надо скидывать.
-
Чтобы было понятнее о каких лагах речь, создал мини-приложение, на форме которого всего четыре TText, они движутся по кругу (квадрату, конечно). Код привожу в конце под спойлером.
https://www.youtube.com/watch?v=UQSS-BeXSAA
На этом видео я последовательно снимаю работу приложения в Windows, в симуляторе IOS и на Android-планшете. В первых двух случаях элементы движутся плавно, а на планшете заметны регулярные рывки. На Android-телефоне, кстати, всё работает плавно (снять не могу, но поверьте на слово).
const SPEED = 10; MARGIN = 20; procedure RenderingSetupCallback(const Sender, Context: TObject; var ColorBits, DepthBits: Integer; var Stencil: Boolean; var Multisamples: Integer); begin // Override OpenGL rendering setup to use custom values. ColorBits := 16; // default is 24 DepthBits := 0; // default is 24 Stencil := False; // default is True Multisamples := 0; // default depends on TForm.Quality or TForm3D.Multisample end; procedure RegisterRenderingSetup; var SetupService: IFMXRenderingSetupService; begin if TPlatformServices.Current.SupportsPlatformService (IFMXRenderingSetupService, IInterface(SetupService)) then SetupService.Subscribe(RenderingSetupCallback); // There is also SetupService.Unsubscribe, which removes the hook. end; procedure TForm2.Timer1Timer(Sender: TObject); var I: Integer; T: TText; begin for I := 1 to 4 do begin T := TText(Self.FindComponent('Text' + inttostr(I))); if T.Tag = 1 then begin T.Position.X := T.Position.X + SPEED; if T.Width + T.Position.X + MARGIN >= Self.Width then begin T.Tag := 2; Continue; end; end; if T.Tag = 2 then begin T.Position.Y := T.Position.Y + SPEED; if T.Height + T.Position.Y + MARGIN >= Self.Height then begin T.Tag := 3; Continue; end; end; if T.Tag = 3 then begin T.Position.X := T.Position.X - SPEED; if T.Position.X - MARGIN <= 0 then begin T.Tag := 4; Continue; end; end; if T.Tag = 4 then begin T.Position.Y := T.Position.Y - SPEED; if T.Position.Y - MARGIN <= 0 then begin T.Tag := 1; Continue; end; end; end; end; initialization RegisterRenderingSetup; end.
-
Хоть код покажите - как реализовано перемещение.
На форме таймер лежит с Interval=60 (пробовал разные значения), который делает так:
Self.BeginUpdate; Тут я перебираю все TText'ы, которые хранятся в TList и изменяю плавно их координаты Self.EndUpdate;
Пробовал вместо таймера приделывать к ним компонент TFloatAnimation - не быстрее.
Ну и про Canvas тоже рассказывал. В таймере говорил
PaintBox.Repaint;
А в методе Draw() у ПаинтБокса делал так:
Canvas.BeginScene; Отрисовываю в цикле все тексты при помощи FillText Canvas.EndScene;
...
Спасибо. Не знал о таком. Нашёл то же самое в справке:
http://docwiki.embarcadero.com/RADStudio/XE6/en/Overriding_OpenGL_Rendering_Parameters
Но не помогло. TText'ы ведут себя всё так же - иногда подлагивают.
В Вашем случае добавление RenderingSetupCallback само по себе лекарство, или Вы как-то по-другому выводите графику на экран? Тоже пользуетесь FMX-компонентами или "рендерите" графику на канву?
-
Здравствуйте.
Пишу приложение на Delphi XE8. Суть его в том, чтобы показывать на экране некие данные, присылаемые по сети. Данные очень простые: короткие тексты разных цветов в разных частях экрана. При этом эти тексты должны иногда перемещаться туда-сюда. Этакий информер.
Я использовал компонент TText для вывода. Больше на форме ничего нет, только с десяток этих TText'ов, которые в основном ничего не делают, но по команде перемещаются.
Приложение простое и прекрасно работает. Нет, не прекрасно: если в windows всё плавно, на android-телефоне плавно, то на Android-планшете заметны неприятные подтормаживания: элементы двгаются с заметными рывками, иногда случается общий лаг на долю секунды.
Пробовал вместо TText'ов кинуть на форму TPaintBox и выводить на Canvas тексты вручную. Не заметил прироста скорости.
Помогите. ) Подскажите метод, которым на Android можно быстро выводить простую графику. Желательно пример исходного кода, чтобы я сразу его запустил и сказал "ага, действительно плавно", а там уж я адаптирую свой проект.
Просто обидно: всё работает - база, сервер, логика на клиенте, но вот показать пользователю симпатично не выходит, сразу бросается в глаза, что приложение "тормозит".
Спасибо.
Событие завершения воспроизведения файла.
в TMediaPlayer
Опубликовано
Такой код работает под Android. Под виндой не работает.
Также, если выводить в лог
То что под Андроидом, что под виндой, значения нулевые. То есть на них опираться нельзя.
Помогите, как под виндой убедиться, что файл отыграл?