我正在使用最新的Corona SDK版本。在我的应用程序中,我通过network.download(...)加载图像。如果用户处于离线状态,我会改为加载占位符。
有时下载失败或者无法正确保存文件。如果我然后尝试使用display.newImageRect()显示图像,则会显示警告:警告:scripts / scenes / game.lua:98:file' test.png'不包含有效图像
如何捕获此警告并显示占位符?检查fileExists()不会捕获损坏的文件。
谢谢, FJ
答案 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
)