Каков наилучший способ реализовать функции BitmapImage без наследования? - PullRequest
1 голос
/ 31 марта 2011

this.container.addElement (myCustomImageInstance as GraphicElement) должен отображать тестовое изображение.

package com.www
{
    import spark.primitives.BitmapImage;
    import spark.primitives.supportClasses.GraphicElement;

    public class BaseTest extends GraphicElement
    {       
        public function BaseTest()
        {
            super();
        }

        /* stuff */
    }

    public class MyCustomImage extends BaseTest
    {
        private var _img:BitmapImage = null;

        public function MyCustomImage()
        {
            super();
        }

        public function get img():BitmapImage {
            if (!_img) {
                _img = new BitmapImage();
                _img.source = /* BitmapData of a test image */;
            }
            return _img;
        }

        /* It obviously does not work, any ideas?
        override public function createDisplayObject():DisplayObject {
            return img.displayObject;
        }

        override public function get displayObject():DisplayObject {
            return img.displayObject;
        }
        */

    }

}

Большое спасибо

1 Ответ

1 голос
/ 01 апреля 2011

В отличие от mx:Image, класс spark BitmapImage не включает функции-члены для загрузки растровых данных. Следовательно, свойство source, в которое вы пытаетесь вставить свой URL-адрес, предназначено только для получения реальных растровых данных (что-то, возвращенное либо из SWFLoader или Loader, либо из файла встроенного изображения). Пожалуйста, смотрите документацию AS3: s: BitmapImage # source

Хотя технически вы можете поместить URL-адрес в директиву embed (например, @Embed("http://...image.jpg")), я предполагаю, что поскольку вы используете ActionScript вместо MXML, вы намерены динамически загружать изображения.

В этом случае вам необходимо либо использовать mx.controls.Image , либо использовать отдельный mx.controls.SWFLoader или flash.display.Loader чтобы загрузить изображение, которое вам нужно. Следует отметить, что процесс загрузки выполняется асинхронно.

Может оказаться полезным следующее учебное пособие, в котором показано, как использовать flash.display.Loader вместе с s:BitmapImage для работы подобно mx: Image: http://polygeek.com/2452_flex_extending-spark-bitmapimage

...