1

我的 LoaderInfo 将返回 swf 本身,而不是通过 FileReference 和 Loader 给出的图像。我在调试它时遇到了问题,因为 LoaderInfo.content 返回 [Object Main](我的文档类)。经过调查,我发现LoaderInfo.content是一个swf文件,根据contentType。

问题是,图像的文件引用是正确的(它是图像,而不是 swf)。

我的代码:

    private function onAction(e:MouseEvent){
        if(e.currentTarget.name == 0){
            myFileReference = new FileReference();
            myFileReference.browse(getTypes());
            myFileReference.addEventListener(Event.SELECT, loadedImage);
            myFileReference.addEventListener(Event.COMPLETE, loadImage15);
        }
    }
    private function loadedImage(e:Event){
        var imgHolder:ImageHolder = Main.imageHolder;
        while(imgHolder.numChildren > 0){
            imgHolder.removeChild(imgHolder.getChildAt(0));
        }
        myFileReference.load();

    }
    private function loadImage15(e:Event){
        var loader:Loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadImg2);
        loader.loadBytes(myFileReference.data);
        trace(myFileReference.type); // .JPG
    }
    private function loadImg2(e:Event){
        var lInfo:LoaderInfo = (e.target as LoaderInfo); //e.target is indeed LoaderInfo
        lInfo.removeEventListener(Event.COMPLETE, loadImg2);
        trace(loaderInfo.contentType); //application/x-shockwave-flash
        var newSprite:MovieClip = loaderInfo.content as MovieClip;
        Main.imageHolde.addChild(newSprite); //Error as you can't addChild Main to Main
    }
    private function getTypes():Array {
        return [new FileFilter("Images","*.jpg;*.jpeg;*.gif;*.png")];
    }
4

2 回答 2

2

编辑

我最初有一个非常复杂的答案 - 这是错误的......

你只是在你的程序中有一个错误:

// here you reference the Loader's contentLoaderInfo

var lInfo:LoaderInfo = (e.target as LoaderInfo); 
lInfo.removeEventListener(Event.COMPLETE, loadImg2);

// but from here on out, you reference your parent class' "loaderInfo" property!

trace(loaderInfo.contentType);
var newSprite:MovieClip = loaderInfo.content as MovieClip; // <- this is your Main class!
Main.imageHolde.addChild(newSprite); //Error as you can't addChild Main to Main

更改loaderInfolInfo,你应该没问题。

于 2011-12-11T11:38:19.900 回答
0

我之前问过这个问题: Loader.loadBytes(byteArray) 加载图像

没人知道 :]

如果您使用 Loader 加载图像字节数,您将收到:

Loader.content is MovieClip
Loader.content.getChildAt(0) is Bitmap
于 2011-12-11T08:50:05.967 回答