Това е втората част от урока Löve2D, базиран на стар (но златен) урок за pygame. За да прочетете част 01, щракнете тук.
И така, като се има предвид, че вече сме експерти по правоъгълниците, сега можем да се прицелим по-високо и да опитаме нещо по-смели и реалистични... като изображение =D
Това е изображението, което ще използваме:
-- file: main.lua local ball_img = nil function love.load() -- load the image once and set it to ball_img ball_img = love.graphics.newImage("ball.png") end function love.draw() -- white background love.graphics.setBackgroundColor(1, 1, 1) -- draw our image in the position 20x20 love.graphics.draw(ball_img, 20, 20) end
Като се има предвид, че имате файла conf.lua както преди, фрагментът по-горе трябва да произведе нещо подобно:
Нашият код този път е доста прост: ако ball.png е в същата папка като нашия main.lua файл, ние извикваме newImage отвътре love.load зазареждане на изображението в ball_img. В love.draw боядисваме фона на нашия прозорец в бяло (за да съответства на фона на изображението) и рисуваме изображението с love.graphics.draw на желаната позиция.
Този път не използваме, нито заместваме love.update, защото нашият пример е статичен. Както беше обсъдено по-рано, правилното място за зареждане на ресурси като медийни файлове е в love.load. Ако се опитате да заредите ресурси от обратно извикване на löve като love.update или love.draw, които се извикват в цикъл, вашата програма ще изчерпи паметта и катастрофата.
Искам да го чуя!
Нашият пример за изображение е готин и всичко освен малко саундтрак наистина би имало значение тук, така че нека добавим един!
Моля, отидете на freemusicarchive и изтеглете песента „Night Owl“. Това ще бъде нашият звуков файл.
local ball_img = nil local music = nil function love.load() -- load the image once and set it to ball_img ball_img = love.graphics.newImage("ball.png") -- mp3, ogg, wave and whatever libmodplug supports -- second argument can be stream or static; -- stream reads from disk while static reads from loads and memory; music = love.audio.newSource('Night_Owl.mp3', 'stream') music:setLooping( true ) -- play on loop music:play() -- play =D end function love.draw() -- white background love.graphics.setBackgroundColor(1, 1, 1) -- draw our image in the position 20x20 love.graphics.draw(ball_img, 20, 20) end
Добавянето на фонова музика към нашата демонстрация е съвсем просто: заредете звуковия файл, настройте го да се възпроизвежда непрекъснато и го „пуснете“. Едно нещо, което може да предизвика любопитството ви, е вторият аргумент за функцията newSource. Всъщност той казва на löve как трябва да се работи с файла. Ако вторият аргумент е поток, файлът ще бъде прочетен от диска, което добавя известно натоварване към диска, но спестява много памет. Ако е зададено на статичен, компресираният аудио файл ще бъде декомпресиран и зареден в паметта. Малък файл от 5mb може да побере до 50mb в паметта на вашия компютър, когато е декомпресиран, така че го използвайте внимателно.
Добър случай за използване на статични е, когато искате да пуснете кратки звуци, когато настъпи събитие, като скок на символ.
В тези случаи не бихте искали аудиото да се възпроизвежда циклично, така че няма нужда да извиквате setLooping.
Моля, оставете в коментарите вашето мнение за втората част на този урок и се абонирайте! ; )