2017-04-05 2 views
0

Ich arbeite mit der neuesten Corona SDK-Version. In meiner App lade ich ein Bild über network.download (...). Wenn der Benutzer offline ist, lade ich stattdessen einen Platzhalter.Corona SDK - Überprüfen, ob eine gültige Image-Datei

Manchmal schlägt der Download in der Mitte fehl oder speichert die Datei nicht korrekt. Wenn ich dann versuche, das Bild mit display.newImageRect() anzuzeigen, wird die Warnung angezeigt: WARNING: scripts/scenes/game.lua: 98: Datei 'test.png' enthält kein gültiges Bild

Wie kann ich diese Warnung abfangen und stattdessen einen Platzhalter anzeigen? Das Überprüfen von fileExists() fängt die beschädigte Datei nicht ab.

Danke, fj

Antwort

1

Von Lua documentation

lokalen Status, err = pcall (functionName-)

Die pcall Funktionsaufrufe im geschützten Modus erstes Argument, so dass fängt es irgendwelche Fehler während der Ausführung der Funktion. Wenn keine Fehler vorhanden sind, gibt pcall "true" sowie alle vom Aufruf zurückgegebenen Werte zurück. Andernfalls gibt es false, plus die Fehlermeldung zurück.

Sie können pcall Funktion Fangfehler verwenden, wenn Bilderzeugungs

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 

Was ist mehr ich unter Beispiel genutzt network.download von 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

Danke, das werde ich versuchen! –

+0

Es sieht so aus, als ob der PCALL den Fehler eines fehlenden Bildes nicht abfängt. Wenn die Datei nicht existiert, fängt sie den Fehler nicht auf ... ?? –

+0

Sie haben Recht. Ich habe es repariert. Sollte arbeiten:) – ldurniat

Verwandte Themen