我正在尝试使用away3d来加载纹理。一切正常,除非在项目中嵌入纹理,它会崩溃并提供
error: VerifyError: Error #1014: Class mx.core::BitmapAsset could not be found.
嵌入纹理的代码:
[Embed(source="../embedded/texture.jpg")]
public var reelTexture:Class;
我正在使用Adobe flex builder 3,Away3d 4.1。
答案 0 :(得分:1)
问题是您的项目库路径中没有framework.swc
/ core.swc
/ flex.swc
(取决于您的Flex SDK版本),但是此swc的链接可以导致使用mxmlc编译时,应用程序的大小增加约200kb,即使您不直接使用flex。
我建议您执行以下操作(我们在纯as3项目中执行此操作):
1.创建名为flex4embedapi
(或flex3embedapi
的flex库项目取决于您在主项目中使用的Flex SDK版本)
2.创建文件classes.as
:
package
{
import mx.core.BitmapAsset;
import mx.core.ByteArrayAsset;
import mx.core.FontAsset;
import mx.core.SoundAsset;
import mx.core.SpriteAsset;
public class classes
{
public function classes()
{
ByteArrayAsset;
SpriteAsset;
BitmapAsset;
FontAsset;
SoundAsset;
}
}
}
3.确保此类包含在库中,包括列表(Project->Properties->Flex library build path->Classes
)
4.将flex4embedapi.swc
复制到项目的lib文件夹(带有链接的swc库的文件夹)。
一切都应该有效。
UPD: 要快速修复,请尝试使用Flex SDK 4.6的此配置文件(-load-config = config.xml),它100%适用于没有任何其他链接库的as3项目:
<flex-config>
<target-player>11.1.0</target-player>
<default-frame-rate>40</default-frame-rate>
<compiler>
<locale>
<locale-element>en_US</locale-element>
</locale>
<external-library-path>
<path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
</external-library-path>
<library-path>
<path-element>${flexlib}/libs/core.swc</path-element>
<path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}</path-element>
</library-path>
<optimize>true</optimize>
<warn-no-constructor>false</warn-no-constructor>
</compiler>
</flex-config>
测试项目包含唯一的主要类embedtest.as
:
package
{
import flash.display.Sprite;
import flash.utils.ByteArray;
public class embedtest extends Sprite
{
[Embed(source="somefile.txt", mimeType="application/octet-stream")]
private static const some_file:Class;
public function embedtest()
{
var b:ByteArray = new some_file();
trace(b.length);
}
}
}