我正在尝试访问通过自定义LoadImage类添加到舞台的图像的宽度和高度。即使图像显示正确,跟踪结果也为0。有什么问题?
//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 :(得分: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
}
答案 1 :(得分:0)
你想在图片完全加载之前获得宽度和高度吗?有关详细信息,请参阅this question。