2013-05-30 4 views
6

Моя игра High Definition, и я использую много HD-изображений и спрайтов, занимая много памяти текстур. В результате я получаю уродливый черный экран перед загрузкой Scene, охватывая несколько секунд. Поэтому я хочу сделать экран загрузки. На самом деле два. Один для моего главного меню и один для моей основной игры. Я много раз искал весь день, но я не нашел никаких шагов для создания экрана загрузки.Как создать экран загрузки в Corona SDK?

Что я хочу сделать:

-Having экран загрузки, с только текст, говоря «ЗАГРУЗКА ...» и другой текст с процентом, который вычисляет, сколько мой следующий экран активы загружены.

-После того как я закончил, я хочу удалить экран загрузки и начать сцену основного меню или мою основную сцену игры без задержки.

Я разрабатываю для Android, но любые комментарии для iPhone также приветствуются.

Как сканирующая доска знает, загружена ли следующая сцена и в каком проценте? Где я должен поместить свои newImageRects? Я не мог найти ни одного учебника.

ответ

7

В вашем main.lua вы должны создать функцию loadAlImages() где вы будете загружать все изображения высокой четкости и spritesheets.

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) 

Теперь, если вы хотите, чтобы показать и обновить другой текст с процентом, который вычисляет, сколько ваш следующий экран активы загружены, вы должны создавать изображения, спрайты с .isVisible = ложным и когда они все созданы изменения .isVisible = true. Вы можете поместить код, который обновляет процентный текст после создания некоторых изображений.

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) 

Я думаю, что вы можете поместить все ваши файлы изображений в одной группе дисплея и установить .isVisible = ложный на этой группе. Это сэкономит вам несколько строк кода. То же самое для & alpha; = 0


Есть много способов. Вы можете объявить свои переменные, а затем создать их в функции loadAlImages(), или вы можете поместить их все в таблицу и использовать эту таблицу для получения нужного изображения. Первый пример:

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 

Пример с таблицей:

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 

Подробнее:
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

Должны ли все изображения и спрайты быть локальными? или глобальной? Потому что я хочу использовать некоторые из них с событием «нажмите», чтобы добавить функциональность. – user2347313

+0

Большое спасибо! я голосовал – user2347313

1

Я предполагаю, что вы предварительно загрузить все изображения, прежде чем использовать их в сцене ..

display.newImage() 

функция будет делать это. Итак, вот что вам следует сделать:

1.Не ничего с изображениями, но вызывайте загружаемое изображение с помощью функции display.newImage(). На экране появится экран загрузки. После этого подождите 500 мс и вызовите все остальные изображения. Когда игра должна перейти в главное меню, удалить экран загрузки я имею в виду:

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

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

Я не понимаю. У меня есть файл menu.lua, который также является моим файлом main.lua. Я загружаю все изображения там, но когда я пытаюсь запустить его, черный экран появляется в течение нескольких секунд, а затем он запускается. Где я предварительно загружаю файлы? В каком файле .lua? Не каждый автономный файл .lua? Я абсолютно не знаком с короной. – user2347313

Смежные вопросы