2013-05-30 12 views
6

Mein Spiel ist High Definition, und ich benutze viele HD-Bilder und Spritesheets, die eine Menge Texturspeicher aufnehmen. Das Ergebnis ist, dass ich einen hässlichen schwarzen Bildschirm bekomme, bevor meine Szene geladen wird. Also ich möchte einen Ladebildschirm machen. Eigentlich zwei. Einer für mein Hauptmenü und einer für mein Hauptspiel. Ich habe den ganzen Tag viel gesucht, aber ich habe keine Schritte gefunden, um einen Ladebildschirm zu machen.Wie erstelle ich einen Ladebildschirm in Corona SDK?

Was ich tun möchte:

-unter einen Ladebildschirm, mit nur Text „Loading ...“ sagen, und einen anderen Text mit einem Prozentsatz, wie viel meine nächsten Bildschirm Vermögen berechnet geladen haben.

- Nachdem ich fertig bin, möchte ich meinen Ladebildschirm entfernen und meine Hauptmenüszene oder meine Hauptspielszene ohne Verzögerung starten.

Ich entwickle für Android, aber auch Kommentare für das iPhone sind willkommen.

Wie weiß das Storyboard, wenn meine Szene geladen folgt und in welchem ​​Prozentsatz? Wo sollte ich meine newImageRects platzieren? Ich konnte kein einziges Tutorial finden.

Antwort

7

In Ihrem main.lua sollten Sie eine Funktion loadAlImages create() wo Sie alle Ihre HD-Bilder und spritesheets geladen werden.

local loadingText = display.newText("LOADING ...", 0, 0, native.systemFont, 24) 
myText:setTextColor(255, 255, 255) 

local function loadAlImages() 
    --create all your images here. 

    --remove LOADING text 
end 

--if you still see black screen at the start try to increase delay > 500 ms 
timer.performWithDelay(500, loadAlImages, 1) 

Nun, wenn Sie einen anderen Text mit einem Prozentsatz angezeigt werden soll und aktualisieren, wie viel Ihre nächsten Bildschirm Assets geladen haben berechnet, sollten Sie Ihre Bilder, Sprites mit .isVisible = false und wenn sie erstellen Alle Änderungen werden erstellt. .isVisible = true. Sie können nach der Erstellung einiger Bilder Code hinzufügen, der den Prozentwert aktualisiert.

local loadingText = display.newText("LOADING ...", 0, 0, native.systemFont, 24) 
myText:setTextColor(255, 255, 255) 

local function loadAlImages() 
    --create some images here. 
    --update text's percentage to 20% 
    --create some images here. 
    --update text's percentage to 50% 
    --create some sprites here. 
    --update text's percentage to 90% 
    --change **.isVisible=true** for all your created files but **.alpha=0** 
    --update text's percentage to 100% 
    --remove LOADING text 
    --transition .alpha of all images to 1 
end 

timer.performWithDelay(500, loadAlImages, 1) 

Ich glaube, Sie alle Dateien, um Ihre Bilder in einer Anzeigegruppe auf dieser Gruppe setzen können .isVisible = false und eingestellt. Dadurch sparen Sie einige Codezeilen. Das gleiche gilt für alpha = 0


Es gibt viele Möglichkeiten. Sie können Ihre Variablen deklarieren und sie dann in der loadAlImages() - Funktion erstellen oder Sie können sie alle in eine Tabelle einfügen und diese Tabelle verwenden, um das gewünschte Bild zu erhalten. Das erste Beispiel:

local image 

local function loadAlImages() 
    --create some images here. 

    image = display.newImageRect("image.png", 100, 100) 
    image:setReferencePoint(display.CenterReferencePoint) 
    image.x = display.contentCenterX 
    image.y = display.contentCenterY 

    --create some sprites here. 
end 

Beispiel mit der Tabelle:

local imagesTable = { } 

local function loadAlImages() 
    --create some images here. 

    local image = display.newImageRect("image.png", 100, 100) 
    image:setReferencePoint(display.CenterReferencePoint) 
    image.x = display.contentCenterX 
    image.y = display.contentCenterY 
    imagesTable.image = image 

    --create some sprites here. 
end 

Weitere Informationen:
http://lua-users.org/wiki/ScopeTutorial
http://www.coronalabs.com/blog/2011/06/21/understanding-lua-tables-in-corona-sdk/
http://lua-users.org/wiki/TablesTutorial

+0

Sollen alle Bilder und Sprites lokal sein? oder global? Weil ich einige von ihnen mit einem "tap" -Ereignis verwenden möchte, um Funktionalität hinzuzufügen. – user2347313

+0

Vielen Dank! ich wählte – user2347313

1

Ich gehe davon aus, dass Sie alle Bilder vorzuladen, bevor sie in einer Szene mit ..

display.newImage() 

Funktion würde das tun. Also hier ist, was Sie tun sollten:

1.Do nichts mit Bildern, sondern rufen Sie ein Laden Bild mit Display.newImage() -Funktion. Dies zeigt einen Ladebildschirm an. Warten Sie nach dem Aufrufen 500ms und rufen Sie alle anderen Bilder auf. Wenn das Spiel zum Hauptmenü gehen sollte, entfernen Sie den Ladebildschirm ich meine:

local loadImg = display.newImageRect("loading.png" .. blah blah) 

timer.performWithDelay(500, function() -- load all other images then main() end, 1) 
+0

ich es nicht. Ich habe eine menu.lua-Datei, die auch meine main.lua-Datei ist. Ich lade alle Bilder dort, aber wenn ich versuche, es zu starten, erscheint ein schwarzer Bildschirm für mehrere Sekunden und dann beginnt es. Wo lade ich die Dateien vor? In welcher .lua Datei? Ist nicht jede .lua-Datei autonom? Ich bin völlig neu in Corona. – user2347313