Мы говорим о mx.controls.Image
? если это так, то источником изображения могут быть: класс, растровое изображение (не BitmapData), строка (в этом случае предполагается, что вы хотите загрузить его вместо использования встроенного). Если вы хотите найти общий знаменатель для всего этого, то Object - это тот класс, однако я бы предпочел ограничить его чем-то конкретным для вашего варианта использования.
Однако, если я могу что-то посоветовать ... не используйте mx.controls.Image
, это слишком раздуто, даже для платформы Flex. Если это должен быть UIComponent - расширьте UIComponent и разрешите источнику иметь тип BitmapData - так вы сможете лучше управлять ресурсами - вы можете, например, повторно использовать то же самое фактическое изображение. Затем вы можете использовать graphics
свойство элемента управления для отображения изображения.
Еще один совет, если вы все еще здесь :) Не используйте [Bindable]
, особенно его короткую версию, особенно не для частной переменной - вы избавите себя от разочарования в виде бесчисленных часов отладки ... Кроме того, в вашем случае вы не собираетесь изменять значение этой переменной в любом случае ...
Ты все еще здесь? Ну, не используйте [Embed]
для переменных, используйте его для определения класса - немного больше работы для вас, но это, потенциально, сделает ваш код более переносимым. Если вы встраиваете класс, то компилятор не будет генерировать глупый класс «что-то-что-актив», он будет использовать Bitmap или BitmapData - в зависимости от того, какой класс расширяется. Таким образом, вы не будете вводить зависимость от платформы Flex и, как правило, будете иметь больший контроль над своим кодом.
РЕДАКТИРОВАТЬ: выше было написано, предполагая, что переменная _picture (class) и _picture (некоторая переменная, используемая в функции) не одно и то же. Но если это одно и то же, класс Class
является динамическим, что означает, что вы можете добавлять к нему свойства во время выполнения (не знаю почему, это дизайнерское решение Adobe ...), однако компилятор действовать так, как будто это невозможно, поэтому вы можете обойти это, добавив свойство через отражение:
var _picture:Class = Sprite;
_picture["source"] = whatever;
trace(Sprite["source"]);