我有一个Away3D 4.0应用程序,它的UI是在旧的闪存显示API中制作的,只能部分硬件加速。
在PC上运行良好,但移动设备上UI的帧速率太低,因此我将其移植到Starling。
所以我尝试使用Away3D和Starling,但它们不能一起工作(它可以编译,但存在运行时错误)。我需要改变什么?具体地或一般地用于可能的另一个2D库,例如ND2D。是否有现成的库支持此功能?
编辑:首先我添加了一个Away3D内容,没有任何错误。初始化Starling时,错误在第249行的Starling.as
(库类)中。我也按照别人的建议尝试了一下,但没有任何区别(而且信息已经存在3个月了,图书馆正在更新)。
编辑2:错误是由Away3D中的enableDepthAndStencil
值不同引起的,该值在Sparling中被硬编码为false,因为它并不真正需要它。好吧,在"修复"后,没有运行时错误:Away 3D内容显示,但后来我添加了Starling,画布变黑。我想我将不得不深入研究Away3D的来源。
您可以在github存储库中查看starling库的源代码。这是Starling.as文件的链接>https://github.com/PrimaryFeather/Starling-Framework/blob/master/starling/src/starling/core/Starling.as
抛出错误的Starling方法是这样的:
private function updateViewPort():void
{
if (mContext)
mContext.configureBackBuffer(mViewPort.width, mViewPort.height, mAntiAliasing, false);
mStage3D.x = mViewPort.x;
mStage3D.y = mViewPort.y;
}
从外观上看,您应该能够删除移动设备的此代码,因为您的使用将无法调整视口的大小。要做到这一点,请从github存储库下载库,而不是使用starling网站上的swc。https://github.com/PrimaryFeather/Starling-Framework然后,您可以自定义您的starling构建以与Away3D兼容。
我按照这个注释中的说明和后面的说明进行操作(另外,只需要在updateViewPort()
中的Starling.as
中将enableDepthAndStencil
更改为true
)。