2013-06-05 100 views
0

我正在使用flex 4.5.1。我在我的Flex應用程序中有圖像。我發出一個http請求,並檢索位於項目工作區中assets文件夾下的圖片的文件路徑。我在屏幕上也有一個標籤,我在更新圖像的同時進行了更新。通常它們應該同時更新,但圖像在更新標籤後1或2秒更新。Flex 4.5從資源文件夾加載圖片花費太多時間

下面的代碼是圖像及其與初始源文件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

將你的圖像嵌入到編譯好的應用程序中怎麼樣? – duTr

回答

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; 
} 

編輯:

入住時需要加載。

+0

謝謝你的回答。這不會減少圖像的加載時間。它只是等待圖像被加載到更新標籤。我最初需要的是在更新標籤時立即加載圖像。這可以被認爲是沒有時間限制的同樣問題的解決方案嗎? – Eneramo

+0

加載其他格式(如png)或位圖大小較小時,時間會有所不同嗎? – marbel82

+0

我只使用jpeg文件,我認爲它可能有更好的性能。還有一件事,我忘了提及圖像大小可以在資產文件夾中有所不同,他們都調整到一定的大小。 – Eneramo

相關問題