【问题标题】:Use embedded images in FlexLib Project in Actionscript Project在 Actionscript Project 中使用 FlexLib Project 中的嵌入图像
【发布时间】:2011-06-09 03:13:16
【问题描述】:

我有一个带有嵌入类的 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 项目,它使用这个 FlexLib 项目 并在舞台上添加 Visual 类:

package
{
    import flash.display.Sprite;

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

图片不显示,只是。

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

在项目的属性中,我在 Flex Library Build Path -> Classes / Assets 上尝试了很多配置。但没有一个能正常工作。

【问题讨论】:

    标签: apache-flex image actionscript embed


    【解决方案1】:

    编辑: Idemax Green(问题作者)发现它适用于 prev SDK,但不适用于 Flex SDK Hero - Beta - 4.5.0.17689,他将其记录为错误:https://bugs.adobe.com/jira/browse/SDK-29135

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

    【讨论】:

    • 嗨,布赖恩,感谢您的帮助。但这不是问题。 FlexLib 和 AS 项目是两个完全独立的项目,其他一切都很好,比如 SWC 文件和类的路径。问题是 DisplayObject 变量的 bitmapData 属性为 NULL。如果您在没有 lib 项目的情况下尝试它,这将起作用!
    • 作为一个库项目,您在部署时将其用作 RSL 还是合并库?如果没有图书馆项目,你怎么能尝试呢?
    • 在属性-> Flex库构建路径->库路径选项卡中的FlexLib项目,框架链接是“使用默认(外部)”。在属性 -> Actionscript 构建路径 -> 库路径选项卡中的 Actionscript 项目中,框架链接是“使用默认值(合并到代码中)”,并在底部选中“验证 RSL 摘要(推荐用于生产)”。是不是有问题?
    • 我刚刚创建了与您完全相同的项目,并且运行良好。我使用 Visual 和 EmbededAssets 类将图像放在 FlexLib 项目的 src 文件夹中。确保 Project>Clean 对 FlexLib 项目进行清理,然后在主应用程序中转到 Properties>Build Path>Library 并单击“Add SWC”,将其指向 FlexLib 项目 bin 文件夹中的 FlexLib.swc。
    • Brian,你用的是什么SDK?我用的是4.5英雄。请把你的两个项目发给我来测试我自己。我的电子邮件是 idemax@gmail.com。
    【解决方案2】:

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

    如果您使用 FlashBuilder,您应该编辑 flex 应用程序的 .project 文件,并扩展 linkedResources 标记如下:

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

    【讨论】:

    • 您是否使用 4.5 Hero SDK 对此进行了测试?
    • 请确保所有这些新的 标签都指向有效的位置,并且 - 如果使用更多库项目 - 将您使用的所有位置(就像在语言环境中一样)添加到源路径。
    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 2011-11-21
    • 1970-01-01
    • 2016-05-13
    • 2011-04-23
    • 2015-09-25
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多