科罗纳开发工具包 - 检查图像文件是否有效



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

有时下载在中间失败或无法正确保存文件。如果我尝试使用 display.newImageRect(( 显示图像,则会显示警告:警告:脚本/场景/游戏.lua:98:文件"test.png"不包含有效图像

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

谢谢FJ

来自 Lua 文档

本地状态, err = pcall( 函数名称 (

pcall 函数在保护模式下调用其第一个参数,以便它会在函数运行时捕获任何错误。如果没有错误,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 文档的使用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
)