我觉得用ChangeWatcher也很简单,适用于Embed引入的图片例如:
var cw:ChangeWatcher = ChangeWatcher.watch(img, "width", CompletePicLoad); //cw.unwatch(); 取消 private function CompletePicLoad(event:Event):void { var img:Image=event.target as Image; trace("CompletePicLoad Width="+img.width); }
另外还有一种方法,使用于url引用的图片
转自:http://blog.163.com/cityrock@126/blog/static/9823133920100844132572/
在程序启动后,以Img.load方法载入一个远程传递过来的图像的byte[]数组,随后通过网上的一些流行说法说是在图像的载入完成后捕获 creationComplete事件并获取image的contentwidth和contentheight值即可;实际上,多数情况下这种做法是失败的,比如当前Image的width和Height属性均为自适应宽高度,值均为"100%",那么你按照上面说法取到的数值永远都是当前包含 Image的容器的宽高值,这个问题困扰了我很久,很久很久,烧了香拜了佛,求了高人、问了google还是没有解决。最终还是自己解决了,方法超简单如下:
//先给image对象添加捕获载入完成的事件方法,这一步照上面是没有错的,
img.addEventListener(Event.COMPLETE,CompletePicLoad);
。。。
而在事件代码中,只需要重新定义一个未指定比例变化的Image对象,且不需要添加到显示中,去访问该Image的属性即可。
private function CompletePicLoad(event:Event):void
{ //图片载入完成.
var img:Image = event.target as Image;
trace(img.contentWidth);
lblh.text = img.contentHeight.toString();
}
这其中的img.contentWidth和img.contentHeight就是被载入图片的真实尺寸。