在Actionscript项目中的FlexLib项目中使用嵌入的图像

时间:2011-01-14 12:39:58

标签: flex image actionscript embed

我有一个带有嵌入类的 FlexLib项目

package
{

    public class EmbedAssets
    {
        [Embed( source="image.png" )]
        public static var IMAGE:Class;
    }
}

在同一个项目中,我有一个使用此嵌入式图像的类:

package
{
    import flash.display.DisplayObject;
    import flash.display.Sprite;

    public class Visual extends Sprite
    {
        public function Visual()
        {
            super();

            var aa:DisplayObject = new EmbedAssets.IMAGE() as DisplayObject;

            addChild( aa );
        }
    }
}

我还有另一个 Actionscript Project ,它使用 FlexLib项目并在舞台上添加 Visual 类:

package
{
    import flash.display.Sprite;

    public class AsTest extends Sprite
    {
        public function AsTest()
        {
            addChild( new Visual());
        }
    }
}

图像不会显示,只是。

我调试了应用程序,发现aa的bitmapData为NULL。但是,如果我实施Lib Project,这项工作!

在项目的属性中,ai在Flex库构建路径上尝试了很多配置 - >课程/资产。但没有一个正常工作。

2 个答案:

答案 0 :(得分:1)

编辑: Idemax Green(问题作者)发现它适用于普通的SDK,但不适用于Flex SDK Hero - Beta - 4.5.0.17689,他将其记录为错误:{{3} }

如果FlexLib项目与您的应用程序代码合并,那么我很确定它不会在运行时在该位置看到图像,因为位置将是不同的,例如该库将位于主应用程序的 libs 文件夹中。检查FlexLib swc在bin-debug文件夹中的位置,并修改EmbedAssets中的路径以反映这一点。

答案 1 :(得分:0)

您应该将库项目的assets目录添加到应用程序项目的源路径中。

如果您使用的是FlashBuilder,则应编辑Flex应用程序的.project文件,并按如下方式扩展linkedResources标记:

<linkedResources>
    [...]
    <link>
        <name>[source path] assets</name>
        <type>2</type>
        <locationURI>YOUR_WORKSPACE/YourFlexLib/src/assets</locationURI>
    </link>
</linkedResources>