我正在使用flex 4.5.1。我的flex应用程序中有图像。我发出一个http请求并检索项目工作区中assets文件夹下的图片文件路径。我也在屏幕上有一个标签,我同时更新图像更新。通常它们应该同时更新,但图像在标签更新后1或2秒更新。
以下代码是图像及其初始源文件的ID:
<s:BitmapImage id="personImage" visible="true" left="10" right="10" top="10" bottom="10"
fillMode="scale" scaleMode="stretch" source="assets/TT.jpg"
verticalAlign="bottom" verticalCenter="10"/>
我按如下方式设置图像:
if(fileExist){
personImage.source=lastEntranceService.lastResult.person.image;
personImage.validateNow();
}else{
personImage.source = "assets/TT.jpg";
personImage.validateNow();
}
lastEntranceService.lastResult.person.image; //is the filepath of the image file
我也使用验证功能,但我记得在论坛的某个地方,我读到flex图像是异步加载的。 有标签更新后,我有什么方法可以在屏幕上显示图像。我有时间限制,所以我不能等待图像更新,然后更新标签。 图像的尺寸不同,这意味着资产文件夹中的图像不同。当在屏幕上显示时,图像(需要显示)被调整为一些恒定大小。
感谢您的关注和时间。
答案 0 :(得分:0)
首先必须加载,而不是设置位图源和标签文本。
private var timStart :uint;
private function click() {
bitmapLoader = new Loader();
bitmapLoader.load(new URLRequest(lastEntranceService.lastResult.person.image));
bitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
timStart = getTimer();
}
...
private function loaded(e :Event) {
var timeNeedToLoad:uint = getTimer() - timStart;
personImage.source = bitmapLoader;
label.text = 'Bitmap: '+ lastEntranceService.lastResult.person.image;
}
修改:
检查需要加载的时间。