短信版本 2.1.2.3592

当应用程序已被浏览器调整大小时(在 TW3CustomGameApplication 中),我如何执行 Repaint 或调用 PaintView 方法?

我正在使用 GameView.Width 和 GameView.Height 属性来确定我的应用程序中很多东西的尺寸。当应用程序大小发生变化时,我需要重新绘制或重新绘制

看起来没有要覆盖的 Resize 事件。

问题

1.) 如何捕获调整大小事件?

2.) 我如何重新粉刷?

最佳答案

我对 TW3CustomGameApplication 类的内部结构不是很熟悉,但是在任何时候都应该可以为 JavaScript 端发生的每个事件添加一个专用的事件处理程序。

例如,您可以使用如下代码 Hook 底层 Canvas 元素的调整大小事件:

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

与 ResizeEvent 看起来像
procedure TYourClass.ResizeEvent(Event: JEvent);
begin
  // handle resizing
end;

或者,您也可以使用以下代码 Hook 调整全局窗口大小:
Window.addEventListener('resize', @ResizeEvent);

如果您有一个固定大小的 Canvas 并希望根据窗口大小手动调整它,这会很有用。

由于这 Hook 了底层的 W3C 低级 API,您可能需要添加单元 W3C.HTML5 和 W3C.DOM。

使用底层低级 API 的优势是 W3C 和其他人的良好文档/规范,例如:
  • http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-registration
  • https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
  • https://dom.spec.whatwg.org/#introduction-to-dom-events
  • ...

  • 这种方法的缺点是您需要自己做所有事情(重新发明轮子)。

    对于小型应用程序或 RAD 工作流程,我绝对建议坚持使用 TW3CustomGameApplication 提供的代码,但对于大型项目,看起来更深入可能更有意义。

    关于smart-mobile-studio - 在 TW3CustomGameApplication 中重新绘制和调整大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34613862/

    10-12 17:40