From what I gathered it's difficult to create a loading screen with a progress bar that does reflect actual metrics as Defold doesn't expose anything that would allow you to compare what has been loaded to what's need to be loaded.
Maybe if you break down your game in a set of collection proxy that you "async_load" one after another, as each proxy would send you a message once it's done, but that seems contrived and hard to achieve for most cases.
Now, I believe a loading screen with an animation loop can be done using the same method as described before for creating a splash screen. Namely having your "loading screen" collection as bootstrap with in it :
- the bare minimum to achieve the desired animation.
- a collection proxy that points to your main collection.
- a script of the following form:
function on_message(self, message_id, message, sender)
if message_id == hash("proxy_loaded") then
-- Splash screen must die!
-- Show main collection