0

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

error: VerifyError: Error #1014: Class mx.core::BitmapAsset could not be found. 

嵌入纹理的代码:

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

我正在使用 Adob​​e flex builder 3,Away3d 4.1。

4

1 回答 1

1

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

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

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

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);
    }
}
}
于 2013-09-25T08:28:30.473 回答