Stage3D в Flash Player 11 не отображается - PullRequest
3 голосов
/ 04 октября 2011

Я пытаюсь написать 3D-игру на ActionScript 3.0 с использованием API Stage3D. Я скопировал playerglobal.swc в мой каталог frameworks/libs/player/11.0 и изменил файл frameworks/flex-config.xml, изменив target-player на 11.0.0 и swf-version на 13.

Когда я компилирую свои файлы ActionScript 3.0 с использованием mxmlc, я устанавливаю параметры -target-player=11.0.0 и -static-link-runtime-shared-libraries=true. Теперь я не получаю сообщение об ошибке во время компиляции при импорте com.adobe.utils.AGALMiniAssembler или flash.display.Stage3D, поэтому я предполагаю, что с этим проблем нет.

Я запускаю скомпилированный SWF-файл в Opera и использую последнюю версию Flash Player (версия 11.0.1.152), которая была опубликована сегодня (ура; D). Кажется, с плеером проблем нет, потому что я могу играть в Zombie Tycoon. Однако при воспроизведении SWF-файла Stage3D не отображается; но все остальные экранные объекты, прикрепленные к сцене, отображаются.

Я считаю, что есть какая-то проблема с моей конфигурацией или моим кодом, но я не могу точно определить это. Код, который я использую, был просто скопирован с Labs @ Jam3 . Я считаю, что с окном просмотра были некоторые проблемы, поэтому я просто заменил stage.stage3Ds[0].viewPort=new Rectangle(0, 0, 980, 570); на stage.stage3Ds[0].x=0; stage.stage3Ds[0].y=0;. Возможно, в этом причина проблемы.

Я искал решение по всей сети, но не могу найти его. Любая помощь будет оценена. Однако обратите внимание, что я не хочу использовать фреймворки, такие как Away3D, потому что я хочу использовать низкоуровневую функциональность (я больше занимаюсь программированием). Если вы хотите получить более подробную информацию, пожалуйста, спросите.

1 Ответ

4 голосов
/ 06 октября 2011

@ Миха - Спасибо, что ответили на мой вопрос. Я установил параметр wmode на direct, и он работал как шарм. По-видимому, API Stage3D не работает в режиме transparent, opaque или window. Если у кого-то есть подобные проблемы, вот мой HTML-код, который решил проблему:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"\>
    <title>Hello Stage3D!</title>
  </head>
  <body>
    <object width="800" height="600" data="HelloStage3D.swf">
      <param name="wmode" value="direct"/>
    </object>
  </body>
</html>

Чтобы использовать API Stage3D, необходимо установить для параметра wmode значение direct. Ничто другое не будет работать. Строка 9 необходима.

...