我知道方法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() - 喜欢的东西?
答案 0 :(得分:1)
不,不幸的是,您无法在代码中间强制更新。
但是,您可以等到下一帧在PrintJob上调用start()
;这将使Flash有时间在所有内容冻结之前更新舞台。