我正在尝试使用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.AGALMiniAssembler
或flash.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在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>
要使用Stage3D API,必须将
wmode
参数设置为direct
。没有其他办法。第9行是必需的。关于actionscript-3 - Flash Player 11中的Stage3D不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7650122/