0

我一直在为这个问题苦苦挣扎很久,我猜解决方案很简单。

在我的 Flex 应用程序中,我有一个扩展 UIComponent 的组件,我在运行时加载图像并尝试显示它们。我尝试了很多不同的方法(使用 beginBitmapFill(),使用不同的容器),但我无法让事情按我的意愿工作。该问题似乎与图像的宽度和高度属性有关,这些属性未正确更新。这个想法是:

var sprite:Sprite = new Sprite();
addChild(sprite);

var im:Image = new Image();
im.addEventListener(Event.COMPLETE, function(e:Event):void {
    sprite.addChild(im);
}
im.load('path/image.png');

加载时图像的宽度和高度似乎不正确。我得到 width==0 (没有显示任何内容),但属性 $width 似乎是正确的。如何确保已加载图像的宽度和高度已更新?

4

2 回答 2

3

这是一个时间问题,恕我直言,图像类中的一个错误,因为图像类打破了用户的期望。

问题是,图像类首先进行下载(并最终调度 COMPLETE),然后进行测量(和缩放),然后正确更新值(导致大部分时间在另一个 UPDATE 事件中)。

所以当我第一次偶然发现这个问题时,我的解决方案是首先监听 COMPLETE 事件,然后添加一个监听器到 UPDATE (你不能只监听更新,因为这通常会在创建或下载期间至少分派一次),但这是一个相当糟糕的黑客攻击。

我很确定这个问题之前已经在 stackoverflow 上得到了回答,并且可能有更好的解决方案。

PS:还要注意宽度和内容宽度之间的差异,以确保:)

于 2009-11-16T17:48:22.500 回答
1

尝试使用 Event.INIT 而不是 Event.COMPLETE

于 2009-11-16T15:32:58.530 回答