Проблема с отображением изображения в Flex / Actionscript - PullRequest
1 голос
/ 20 апреля 2010

Я пытаюсь расширить класс Image, но столкнулся с проблемой, которую не могу преодолеть. У меня есть личное изображение (img), которое загружает изображение, и функция, которая берет это изображение и копирует его на родительский.

Функция отладки «copyit2» прекрасно отображает изображение (поэтому я знаю, что оно загружено нормально). Но функция «copyit» не работает - она ​​просто отображает белый прямоугольник. Я не вижу, как заставить copyit работать так, чтобы исходное изображение копировалось в BitmapData, а затем копировалось в родительский файл?

(Идея состоит в том, чтобы выполнить некоторую обработку данных растрового изображения до их отображения, хотя здесь это не показано для упрощения примера.)

Я подозреваю, что это связано с безопасностью загрузки изображений, но я загружаю его с того же сервера, с которого запускается приложение - так что это не должно быть проблемой?

Спасибо за любую помощь, которую может оказать любой.
Ian

package zoomapackage
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.*;

    import mx.controls.Image;
    import mx.events.FlexEvent;

    public dynamic class Zooma extends Image
    {
        private var img:Image;

        public function copyit():void {
            var imgObj:BitmapData = new BitmapData(img.content.width, img.content.height, false);

            imgObj.draw(img);

            var matrix:Matrix = new Matrix();
            this.graphics.beginBitmapFill(imgObj, matrix, false,true);
            this.graphics.drawRect(0, 0, this.width , this.height);
            this.graphics.endFill();
        }

        public function copyit2():void {
            this.source = img.source;
        }

        public function Zooma()
        {
            super();
            img = new Image();
            img.load("http://localhost/Koala.jpg");
        }

    }
}

1 Ответ

1 голос
/ 21 апреля 2010

Исправлено! (Включая это на случай, если кто-нибудь найдет это полезным)

Линия:

imgObj.draw(img);

работает, если я изменяю его на:

imgObj.draw(img.content);

Потерял 2 дня моей жизни на это: - (

...