Question

I'm checking out Flash's 3D capabilities with Away3D, and I'm following the tutorial here. I've run into a major problem though. Everytime I run my project in the browser, I get this error:

Error #2044: Unhandled ErrorEvent:. text=Error #3702: Context3D not available.

I can't see where this error comes from, but it happens after my constructor function ends and before the ENTER_FRAME handler starts.

My code is like this:

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);
        }
    }
}

Now the wierd thing is, when I run it on my browser (FP 11.2), it doesn't work (gives that error), but I can run the swf from the desktop perfectly.

Also, the example file on the tutorial page runs perfectly. What setting is missing, and how can I fix it?

Was it helpful?

Solution

Well, it appears you need to set wmode as direct to make use of the 3D API.

While I had seen this bit of info, the html wrapper needs to be modified in 3 places for it to work on all configurations:

(1) In the javascript for swfObject

params.wmode = "direct";

(2) In the <object> tag

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

and (3) in the <object> tag for IE

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

OTHER TIPS

To extend further helpful hints, if you are trying to open an application that uses Context3D in a new NativeWindow, you need to make sure that the you specify the renderMode in the NativeWindowInitOptions that gets passed into the NativeWindow. The render mode cannot change after the Native Window gets created.

// New window.
options = new NativeWindowInitOptions();
options.renderMode = "direct";
options.transparent = true;
options.systemChrome = NativeWindowSystemChrome.NONE;
nativeWindow = new NativeWindow( options );

I'm posting here hoping to help anyone with the same problem, but exporting to AIR.

Edit the app descriptor.xml and change the value to of rendermode to:

<renderMode>direct</renderMode>

Hope it helps

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top