2017-04-05 49 views
0

我正在使用最新的Corona SDK版本。在我的應用程序中,我通過network.download(...)加載圖像。如果用戶處於脫機狀態,則我加載佔位符。Corona SDK - 檢查有效的圖像文件

有時下載失敗,或者沒有正確保存文件。如果我然後嘗試用display.newImageRect()顯示圖像,警告將顯示:警告:scripts/scenes/game.lua:98:file'test.png'不包含有效圖像

我該如何才能抓住這個警告,並顯示一個佔位符?檢查fileExists()不會捕獲損壞的文件。

謝謝, FJ

回答

1

從Lua documentation

本地狀態,ERR = PCALL(functionName)

的PCALL函數調用在保護模式下的第一個參數,以便 它捕獲函數運行時出現任何錯誤。如果沒有 錯誤,則pcall返回true,加上該調用返回的任何值。 否則,它返回false,並返回錯誤消息。

創建圖像

local image 

local status, err = pcall(function() image = display.newImage('img.png', 100, 100) end) 

if status and image then 
    print('no errors ') 
     -- no errors 
else 
    print('errors ') 
     -- function raised an error: take appropriate actions 
end 

時,您可以使用pcall函數來捕獲的錯誤更重要的是,我把下面的例子使用network.download的距離Corona documentation

local function networkListener(event) 
    if (event.isError) then 
     print("Network error - download failed: ", event.response) 
    elseif (event.phase == "began") then 
     print("Progress Phase: began") 
    elseif (event.phase == "ended") then 
     print("Displaying response image file") 
     myImage = display.newImage(event.response.filename, event.response.baseDirectory, 60, 40) 
     myImage.alpha = 0 
     transition.to(myImage, { alpha=1.0 }) 
    end 
end 

local params = {} 
params.progress = true 

network.download(
    "http://docs.coronalabs.com/images/simulator/image-mask-base2.png", 
    "GET", 
    networkListener, 
    params, 
    "helloCopy.png", 
    system.TemporaryDirectory 
) 
+0

謝謝,我會努力的! –

+0

它看起來像PCALL不會捕獲丟失圖像的錯誤。如果文件不存在,它不會捕獲錯誤...? –

+0

你說得對。我修好了它。應該管用:) – ldurniat