Това е втората част от урока 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.

Моля, оставете в коментарите вашето мнение за втората част на този урок и се абонирайте! ; )