2012-06-03 3 views
3

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

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

Я не могу видеть, где эта ошибка приходит, но это происходит после того, как моя функция конструктора заканчивается и до начала 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 с рабочего стола отлично.

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

+2

Вы установили ''? – Torious

+0

Ну, да, но так как новая оболочка html по умолчанию использует swfObject, мне нужно было добавить параметр в объект params swfObject тоже –

+0

Не могу поверить, что потерял полдня над этим –

ответ

11

Ну, похоже, вам нужно установить 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" /> 
3

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

Редактировать приложение descriptor.xml и изменить значение из RenderMode в:

<renderMode>direct</renderMode> 

Надеется, что это помогает

5

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

// New window. 
options = new NativeWindowInitOptions(); 
options.renderMode = "direct"; 
options.transparent = true; 
options.systemChrome = NativeWindowSystemChrome.NONE; 
nativeWindow = new NativeWindow(options); 
Смежные вопросы