如何在AS3中访问动画片段中加载的JPG的宽度?

时间:2013-06-19 18:49:26

标签: actionscript-3 flash

我正在尝试重现与此网站类似的书架:http://www.callis.com.br/

这些书是PNG文件,有几种不同的大小。

我想要完成的是,在加载几个不同的动画片段(book0,book1,book2,...)后读取它们的宽度,计算推动它所需的间隙,然后排列每本书的x值

每当我尝试访问宽度值时,它都会显示为0.

这是我的代码的一部分,它试图做到这一点。

提前致谢。

for (j=0; j < dados.livro.length(); j++){
    if(j<8){
        targetLivro = MovieClip(MovieClip(root).livros.getChildByName("livro"+(j)));            
    }else{
        targetLivro = MovieClip(MovieClip(root).getChildByName("livro"+(j)));
    }

    preparaLivro(targetLivro,dados.livro[j].imagem.text(),dados.livro[j].link.text());

    //larguraTotalLivrosSup += targetLivro.width;
    //trace(larguraTotalLivrosSup);
    trace("livro"+j+": ");
    trace("título:"+dados.livro[j].titulo.text());
    trace("imagem:"+dados.livro[j].imagem.text());
    trace("link:"+dados.livro[j].link.text());
}

//organiza a primeira estante

//
/*
for (i=0; i<largurasArray.length; i++){
    trace(largurasArray[i]);
}*/

var offset:Number = 20;
for (j=0; j<livros.numChildren; j++){
    //targetLivro = MovieClip(livros).getChildByName("livro"+(j));
    trace(livros.getChildAt(j).width);
}

function preparaLivro(livro:MovieClip, capa:String, url:String){
var capaLoader:Loader = new Loader();
var capaImageRequest:URLRequest = new URLRequest(capa);

var capaBitmapData:BitmapData;
var capaBitmap:Bitmap;
var capaLargura:Number = 0;

capaLoader.load(capaImageRequest);
capaLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{
    capaBitmapData = new BitmapData(e.target.content.width, e.target.content.height);
    capaBitmapData.draw(capaLoader);
    capaBitmap = new Bitmap;
    capaBitmap.bitmapData = capaBitmapData;
    livro.y -= e.target.content.height;

    trace(e.target.content.width, e.target.content.height);
    livro.buttonMode = true;
    livro.addChild(capaBitmap);
    livro.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{
          navigateToURL(new URLRequest(url), "_blank");
    });
    //trace(e.target.content.width);
});
}

1 个答案:

答案 0 :(得分:2)

LoaderInfo(event.target).content实例化位图,如:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest("http://www.google.com/images/srpr/logo4w.png"));

function onComplete(event:Event):void
{
    var bitmapData:BitmapData =
        Bitmap(LoaderInfo(event.target).content).bitmapData;
}

跟踪bitmapData.widthbitmapData.height输出:

  
    

宽度:550,高度:190

  

否则,如果您想要加载器的宽度/高度,请访问加载程序contentLoaderInfo

var width:Number = loader.contentLoaderInfo.width;
var height:Number = loader.contentLoaderInfo.height;