4

SMS バージョン 2.1.2.3592

アプリケーションがブラウザーによって (TW3CustomGameApplication で) サイズ変更された場合、どのように再描画を行うか、または PaintView メソッドを呼び出しますか?

私は GameView.Width および GameView.Height プロパティを使用して、アプリ内の多くのものの寸法を決定しています。アプリケーションのサイズが変わると、再描画または再描画する必要があります

オーバーライドする Resize イベントがあるようには見えません。

質問

1.) サイズ変更イベントをトラップする方法は?

2.) どのように塗り直しますか?

4

1 に答える 1

4

私は TW3CustomGameApplication クラスの内部についてはあまり詳しくありませんが、JavaScript 側で発生するすべてのイベントに専用のイベント ハンドラーをいつでも追加できるはずです。

たとえば、次のようなコードを使用して、基になるキャンバス要素のサイズ変更イベントをフックできます。

GameView.Context.Handle.addEventListener('resize', @ResizeEvent);

ResizeEvent のように見える

procedure TYourClass.ResizeEvent(Event: JEvent);
begin
  // handle resizing
end;

または、次のコードでグローバル ウィンドウのサイズ変更をフックすることもできます。

Window.addEventListener('resize', @ResizeEvent);

これは、固定サイズのキャンバスがあり、ウィンドウ サイズに合わせて手動で調整したい場合に便利です。

これは基礎となる W3C の低レベル API をフックするため、ユニット W3C.HTML5 および W3C.DOM を追加する必要がある場合があります。

基礎となる低レベル API を使用する利点は、次のような W3C などによる優れたドキュメント/仕様です。

このアプローチの欠点は、自分ですべてを行う必要があることです (車輪の再発明)。

小さなサイズのアプリケーションまたは RAD ワークフローの場合は、TW3CustomGameApplication が提供するコードを使用することをお勧めしますが、大きなプロジェクトの場合は、より深く調べる方がおそらく理にかなっています。

于 2016-01-06T11:18:06.733 に答える