PDA

Просмотр полной версии : Кастинг из flash.display.Bitmap в mx.core.IFlexDisplayObject


Nirth
18.06.2006, 16:42
Делаю два класса, для загрузки и группировки изображений
eu.orangeflash.lib.utils.LibriaryLoader
eu.orangeflash.lib.utils.mxml.LibriaryLoader
Первый работает без Flex Framework второй с фреймворком, и есть метод lastLoaded, который возвращает последнее загруженное изображение:

[Bindable(event=LibriaryLoaderEvent.ITEM_INIT)]
[Inspectable]
public function get lastLoaded():Bitmap
{
return __lastLoaded;
}

Все бы ничего но для того чтобы использовать изображение с фреймворком, оно изображение должно быть либо IFlexDisplayObject а еще лучше UIComponent, сначала я конечно попробывал сделать так =) авось пройдет

[Bindable(event=LibriaryLoaderEvent.ITEM_INIT)]
[Inspectable]
override public function get lastLoaded():Bitmap
{
return IFlexDisplayObject(__lastLoaded);
}

Но получил ожидаемую ошибку

Implicit coercion of a value of type mx.core:IFlexDisplayObject to an unrelated type flash.display:Bitmap.

Есть вариант в методе, просто создавать UIComponent и возвращать его тогда в методе нужно изменить тип с BitmapData на DisplayObject, но все же хочу перед этим узнать, может есть какой то способ скастить это правильно?

fishbounce
19.06.2006, 13:56
flash.display.Bitmap можно прокастить только в DisplayObject, далее EventDispatcher и последнее в Object. Кастинг возможен только к родителям.
Все, кто реализует интерфейс IFlexDisplayObject находятся либо "внизу" (по генеалогическому древу:)), либо вообще в других ветках. Так что придется искать другой способ.
Есть класс BitmapAsset, который является наследником Bitmap, как раз реализующий IFlexDisplayObject, видимо созданный для твоих целей в том числе:)

Nirth
19.06.2006, 16:28
О-о спасибо я забыл про BitmapAsset =)