Corona SDK - 检查有效的图像文件

时间:2017-04-05 16:01:19

标签: lua download corona file-exists

我正在使用最新的Corona SDK版本。在我的应用程序中,我通过network.download(...)加载图像。如果用户处于离线状态,我会改为加载占位符。

有时下载失败或者无法正确保存文件。如果我然后尝试使用display.newImageRect()显示图像,则会显示警告:警告:scripts / scenes / game.lua:98:file' test.png'不包含有效图像

如何捕获此警告并显示占位符?检查fileExists()不会捕获损坏的文件。

谢谢, FJ

1 个答案:

答案 0 :(得分:1)

来自Lua documentation

  

本地状态,err = pcall(functionName)

     

pcall函数在保护模式下调用它的第一个参数,这样   它在函数运行时捕获任何错误。如果没有   errors,pcall返回true,加上调用返回的任何值。   否则,它返回false,加上错误消息。

您可以使用pcall功能在创建图像时捕获错误

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

我在下面使用来自Corona documentation

network.download使用示例
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
)