3

我正在使用Away3D检查 Flash 的 3D 功能,并且我正在按照这里的教程进行操作。不过我遇到了一个大问题。每次我在浏览器中运行我的项目时,我都会收到此错误:

错误 #2044:未处理的错误事件:。text=错误 #3702:Context3D 不可用。

我看不到这个错误来自哪里,但它发生在我的构造函数结束之后和ENTER_FRAME处理程序开始之前。

我的代码是这样的:

package {
    import away3d.containers.View3D;
    import away3d.entities.Mesh;
    import away3d.materials.ColorMaterial;
    import away3d.primitives.SphereGeometry;
    import flash.display.Sprite;
    import flash.events.Event;

    [SWF(backgroundColor="#000000", frameRate="60", width="1024", height="768")]
    public class TestAway extends Sprite {
        private var view:View3D;

        public function TestAway() {
            view=new View3D();
            addChild(view);
            var sphereGeometry:SphereGeometry=new SphereGeometry(350);
            var sphereMaterial:ColorMaterial=new ColorMaterial(0xff0000);
            var mesh:Mesh=new Mesh(sphereGeometry, sphereMaterial);
            view.scene.addChild(mesh);
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }


        private function onEnterFrame(event:Event):void {
            view.render();
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
    }
}

现在奇怪的是,当我在浏览器(FP 11.2)上运行它时,它不起作用(给出错误),但我可以完美地从桌面运行 swf。

此外,教程页面上的示例文件运行良好。缺少什么设置,我该如何解决?

4

3 回答 3

12

好吧,看来您需要设置wmodedirect使用 3D API。

虽然我已经看到了这一点信息,但 html 包装器需要在 3 个地方进行修改才能在所有配置上工作:

(1) 在 javascript 中swfObject

params.wmode = "direct";

(2) 在<object>标签中

<param name="wmode" value="direct" />

(3) 在<object>IE 的标签中

 <param name="wmode" value="direct" />
于 2012-06-03T09:39:28.593 回答
5

要扩展更多有用的提示,如果您尝试在新的 NativeWindow 中打开使用 Context3D 的应用程序,您需要确保在传递到 NativeWindow 的 NativeWindowInitOptions 中指定 renderMode。创建本机窗口后,渲染模式无法更改。

// New window.
options = new NativeWindowInitOptions();
options.renderMode = "direct";
options.transparent = true;
options.systemChrome = NativeWindowSystemChrome.NONE;
nativeWindow = new NativeWindow( options );
于 2013-08-09T19:12:56.080 回答
3

我在这里发帖希望能帮助任何有同样问题的人,但要导出到 AIR。

编辑 app descriptor.xml 并将 rendermode 的值更改为:

<renderMode>direct</renderMode>

希望能帮助到你

于 2013-05-27T21:46:58.347 回答