Away3D Context3D недоступен

Я проверяю 3D-возможности Flash с помощью Away3D и следую руководству здесь. Однако я столкнулся с серьезной проблемой. Каждый раз, когда я запускаю свой проект в браузере, я получаю эту ошибку:

Ошибка № 2044: необработанное ErrorEvent:. 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 с рабочего стола.

Кроме того, пример файла на странице учебника работает отлично. Какой настройки не хватает и как исправить?


person Pranav Hosangadi    schedule 03.06.2012    source источник
comment
Вы установили <param name="wmode" value="direct">?   -  person Torious    schedule 03.06.2012
comment
Что ж, да, но так как новая оболочка html использует swfObject по умолчанию, мне также нужно было добавить параметр в объект params swfObject.   -  person Pranav Hosangadi    schedule 03.06.2012
comment
Не могу поверить, что я потерял полдня из-за этого   -  person Pranav Hosangadi    schedule 03.06.2012


Ответы (3)


Похоже, вам нужно установить wmode как direct, чтобы использовать 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" />
person Pranav Hosangadi    schedule 03.06.2012

Чтобы расширить дополнительные полезные советы, если вы пытаетесь открыть приложение, использующее Context3D, в новом NativeWindow, вам нужно убедиться, что вы указываете renderMode в NativeWindowInitOptions, который передается в NativeWindow. Режим рендеринга не может измениться после создания собственного окна.

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

Я пишу здесь в надежде помочь всем, у кого такая же проблема, но с экспортом в AIR.

Отредактируйте файл app descriptor.xml и измените значение rendermode на:

<renderMode>direct</renderMode>

Надеюсь, поможет

person Sr.Richie    schedule 27.05.2013