我正在尝试使用Stage3D API在ActionScript 3.0中编写3D游戏。我已经在playerglobal.swc目录中复制了frameworks/libs/player/11.0,并通过将frameworks/flex-config.xml更改为target-player,将11.0.0更改为swf-version修改了13文件。

使用mxmlc编译我的ActionScript 3.0文件时,设置选项-target-player=11.0.0-static-link-runtime-shared-libraries=true。现在,导入com.adobe.utils.AGALMiniAssemblerflash.display.Stage3D时在编译时不会出现错误,因此我认为这样做没有问题。

我在Opera中运行了已编译的SWF文件,并且使用的是今天公开发布的最新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之类的框架,因为我希望使用底层功能(我更喜欢编程)。如果您需要更多详细信息,请询问。

最佳答案

@Miha-感谢您回答我的问题。我将wmode参数设置为direct,它的工作原理很吸引人。显然,Stage3D API在transparentopaquewindow模式下不起作用。如果有人遇到类似的问题,下面是解决问题的我的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>


要使用Stage3D API,必须将wmode参数设置为direct。没有其他办法。第9行是必需的。

关于actionscript-3 - Flash Player 11中的Stage3D不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7650122/

10-10 18:01