Использование встроенных изображений в проекте FlexLib в проекте Actionscript - PullRequest
1 голос
/ 14 января 2011

У меня есть проект 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 Project и добавляющий Visual класс на сцене:

package
{
    import flash.display.Sprite;

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

Изображениене отображаются, просто.

Я отладил приложение и обнаружил, что bitmapData для aa имеет значение NULL.Но если я реализую из Lib Project, эта работа!

В свойствах проектов я много пробовал конфигурации на пути сборки библиотеки Flex -> Классы / Активы.Но ни одна из них не работает правильно.

Ответы [ 2 ]

1 голос
/ 14 января 2011

РЕДАКТИРОВАТЬ: Идемакс Грин (автор вопроса) обнаружил, что он работает нормально с предыдущими SDK, но не с Flex SDK Hero - Beta - 4.5.0.17689, он зарегистрировал это как ошибку: https://bugs.adobe.com/jira/browse/SDK-29135

Если проект FlexLib объединен с кодом вашего приложения, то я уверен, что он не увидит изображение в этом месте во время выполнения, так как местоположение будет другим, например, библиотека будет в библиотеках папка основного приложения.Проверьте, находится ли FlexLib swc в папке bin-debug, и, возможно, измените путь в EmbedAssets, чтобы отразить это.

0 голосов
/ 11 апреля 2011

Вы должны добавить каталог ресурсов проекта библиотеки к исходному пути проекта приложения.

Если вы используете FlashBuilder, вам следует отредактировать файл .project приложения flex и расширить тег linkedResources следующим образом:

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