Actionscript 3 VerifyError:错误#1014:找不到类mx.core::BitmapAsset

Actionscript 3 VerifyError:错误#1014:找不到类mx.core::BitmapAsset,actionscript-3,apache-flex,away3d,Actionscript 3,Apache Flex,Away3d,我正在尝试使用away3d加载纹理。一切正常,除了在项目中嵌入纹理时,它会崩溃并给出 error: VerifyError: Error #1014: Class mx.core::BitmapAsset could not be found. 用于嵌入纹理的代码: [Embed(source="../embedded/texture.jpg")] public var reelTexture:Class; 我使用的是AdobeFlexBuilder3,Away3D4.1 问题在于,您

我正在尝试使用away3d加载纹理。一切正常,除了在项目中嵌入纹理时,它会崩溃并给出

error: VerifyError: Error #1014: Class mx.core::BitmapAsset could not be found. 
用于嵌入纹理的代码:

[Embed(source="../embedded/texture.jpg")]
public var reelTexture:Class;  

我使用的是AdobeFlexBuilder3,Away3D4.1

问题在于,您的项目库路径中没有
framework.swc
/
core.swc
/
flex.swc
(取决于您的flex SDK版本),但是链接此swc可能导致在使用mxmlc编译时,应用程序的大小增加约200kb,即使您不直接使用flex

我建议您执行以下操作(我们在纯as3项目中执行此操作):

1.创建名为
flex4embedapi
的flex库项目(或
flex3embedapi
取决于您在主项目中使用的flex SDK版本)

2.创建文件
类。如下所示:

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;
    }
}
}
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);
    }
}
}
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>

为了快速解决问题,我添加了framework.swc,问题也一样。此外,在将目标播放器添加到11.1时,我得到以下警告:此编译单元没有在框架元数据中指定factoryClass来加载配置的运行时共享库。要在不使用运行时共享库的情况下编译,请将-static link runtime shared libraries选项设置为true或删除-runtime shared libraries选项。快速修复取决于您使用的SDK版本,例如,对于SDK 4.6,您应添加core.swc而不是frameworks.swc,对于3.6 it,则应添加flex.swc或4.6,core.swc,我甚至删除了它并再次添加了它,问题是一样的:(.真的很奇怪。在一个简单的演示项目中,在我更新的答案中尝试使用config,希望它能帮助Hanks跟进。我应该将新的config.xml放在哪里?如何创建它?我应该在编译器选项中也放-load config吗?