Stage3D错误#3694:该对象由之前调用dispose()处理

时间:2012-09-26 12:30:46

标签: actionscript-3 stage3d

使用Flare3D,当播放器(在闪存中编译时)调整大小,或者当我在浏览器页面中运行它然后锁定wy(windows)机器并再次解锁时,我会遇到错误#3694。

错误是:“该对象是先前调用dispose()处理的。”

我做了一些搜索并找到了一些建议来检查context3D.driverInfo并跳过渲染,如果该字符串等于'Disposed',但这似乎不起作用。在我的例子中,当在独立播放器中运行时,该字符串是“软件(嵌入式)”(在flash ide中运行时)或“DirectX9(Direct blitting)”。

有谁知道错误是什么以及如何避免错误?

1 个答案:

答案 0 :(得分:1)

我有同样的问题,谷歌搜索,发现你的问题......这帮助我找到了答案:)

你可能有一个resize处理程序,当任何东西调整阶段大小时调用。它试图改变stage3D后台缓冲区的大小。

在调整舞台大小时,context3D.driverInfo ==“Disposed”。完成大小调整后,恢复正常。

所以不要这样:

context3D.configureBackBuffer(stageW(), stageH(), 0, false);

尝试:

public function onResizeStage(event:Event) { 
    if (stage3D == null) {
        return;
    }           
    if (context3D == null) {
        return;
    }
    if (context3D.driverInfo == "Disposed") {
        return;
    }
    context3D.configureBackBuffer(stageW(), stageH(), 0, false);
}