2010-06-08 56 views
0

我试图访问通过自定义LoadImage类添加到舞台的图像的宽度和高度。即使图像正确显示,跟踪结果也是0。问题是什么?ActionScript正在检索装载程序图像的宽度/高度

//frame script 

var image:LoadImage = new LoadImage("myImage.jpeg"); 
addChild(image); 
trace(image.width); //returns 0 

//------------------------- 

package 
{ 
import flash.display.Sprite; 
import flash.display.Loader; 
import flash.net.URLRequest; 
import flash.events.Event; 

public class LoadImage extends Sprite 
    { 
    public function LoadImage(imageURL:String) 
     { 
     //Load Image 
     var imageLoader:Loader = new Loader(); 
     imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageHandler); 
     imageLoader.load(new URLRequest(imageURL)); 
     } 

    private function imageHandler(evt:Event):void 
     { 
     addChild(evt.target.content); 
     } 
    } 
} 
+0

尝试在完整的处理程序 – 2010-06-08 14:32:00

+0

我需要从我的框架脚本访问宽度之类的外跟踪宽度。 – TheDarkIn1978 2010-06-08 14:38:48

回答

1

如果您在实例化后立即尝试访问它,则无法访问其属性。你将不得不让事件驱动:

class LoadImage loads image 
frame script listens for a complete event from LoadImage 
LoadImage loads the image, once it has it's hands on it it dispatches the event 
frame script works with the data 

你需要做的的LoadImage事件,一次在imageHandler完成,派遣这一点。当你让你的新的LoadImage,建立监听

var image:LoadImage = new LoadImage("myImage.jpeg"); 
image.addEventListener("complete", loadedImage); //or whatever you call the event 

function loadedImage(evt:Event) { 
    addChild(evt.target); 
    trace(evt.target.content.width); //returns 0 
} 
+0

evt.target.content.width工作正常,但我的问题是从框架脚本访问此,而不是从类内 – TheDarkIn1978 2010-06-08 14:38:07

+0

这就像送你的女朋友到商店的啤酒,立即去冰箱,并期待在那里。你必须等她回来把啤酒放进冰箱里。 (请参阅新的答案) – 2010-06-08 15:01:36

0

您试图在图像完全加载之前获取宽度和高度?有关更多详细信息,请参阅this question