0

我知道 MouseEvent.updateAfterEvent() 或 KeyboardEvent.updateAfterEvent() 方法,它将在事件处理后强制重新渲染舞台,而不是等待下一帧。

但是,我需要一种方法来在我调用它的那一刻强制立即渲染。有没有这样的方法?

实际上我的问题来自于 ActionScript 的打印 API (PrintJob) 的痴呆设计。与整个 ActionScript 体系结构不一致的是,当您调用 PrintJob.start() 时,在显示打印对话框时一切都完全冻结,直到用户单击打印或取消按钮。在 PrintJob.start() 调用之后的任何代码的执行在此之后恢复。

在这个巨大的设计缺陷带来的许多其他更糟糕的问题中,有我的:

public function someMouseOrKeyboardEventHandler() {
  somethingThatUpdatesTheDisplayList();
  var somePrintJob=new PrintJob();
  somePrintJob.start();
  //...
  somePrintJob.send();
}

当我的这个处理程序被调用时,对显示列表所做的更改将在打印对话框关闭之前不可见,因此我无法在打开打印对话框之前在屏幕上显示某些内容。

updateAfterEvent() 无济于事(已经尝试过)。它不会改变任何事情,因为它只在事件处理程序代码执行后强制渲染。

有没有类似 updateRightNow() 的东西?

4

1 回答 1

1

不,很遗憾,您不能在代码中间强制更新。

但是,您可以等到下一帧调用start()PrintJob;这将使 Flash 有时间在一切冻结之前更新舞台。

于 2012-11-30T17:46:07.793 回答