Перейти к содержанию
Fire Monkey от А до Я

severin696

Пользователи
  • Постов

    5
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные severin696

  1. wb: TWebBrowser;

    получение ответа из браузера в приложение:

    procedure TMainForm.wbDidFinishLoad(ASender: TObject);
    var i:integer;
    begin
        // вызывается несколько раз, поэтому кэшируем
        if lastCommand=wb.URL then exit;
        lastCommand:=wb.URL;
        i:=wb.URL.IndexOf('#action=');
        if i>0 then TActionThread.Create(wb.URL.Substring(i+1));
    end;
    
    // на IOS wbDidFinishLoad не срабатывает
    procedure TMainForm.wbShouldStartLoadWithRequest(ASender: TObject;
      const URL: string);
    {$IF DEFINED(IOS) OR DEFINED(MACOS)}
    var i:integer;
    {$ENDIF}
    begin
    {$IF DEFINED(IOS) OR DEFINED(MACOS)}
        if lastCommand=URL then exit;
        lastCommand:=URL;
        i:=URL.IndexOf('#action=');
        if i>0 then TActionThread.Create(URL.Substring(i+1));
    {$ENDIF}
    end;
    

    запрос из приложения в браузер:

    {$IFDEF ANDROID}
              wb.EvaluateJavaScript1(s);

    {$ELSE}
              wb.EvaluateJavaScript(s);
    {$ENDIF}
     

    посылаем ответ из браузера:

    document.location.href = '#action=' + name + '&ts=' + (+new Date) + Math.random()

     

  2. не учёл static...

    смотри Multimedia Timer на MSDN. или вот:

    uses MMSystem; // подключаем Win32 multimedia API (Winapi.MMSystem)

    mmResult: Integer; // ID таймера

    procedure TimeCallBack(TimerID, Msg: word; dwUser, dw1, dw2: DWORD); stdcall; // callback функция
    begin
        form1.Timer1Timer(nil); // рисуем
    end;

    mmResult:=TimeSetEvent(20, 0, @TimeCallBack, 0, TIME_PERIODIC); // создаём таймер

    TimeKillEvent(mmResult); // удаляем таймер

    и идеально, если step не вычислять ( step:=0.02; )

  3.     static DWORD LastTick=0; //из-за неравномерного срабатывания таймера
        DWORD Tick;
        float step;
        Tick=GetTickCount();
        if(LastTick!=0)
        {
            step=(float)(Tick-LastTick)/1000; // столько секунд прошло
        }
        else
        {
            step=(float)Timer1->Interval/1000;
        }
    
    
        LastTick=Tick;

    с логикой LastTick ошибок нету?

×
×
  • Создать...