Это вторая часть туториала 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. Если вы попытаетесь загрузить ресурсы из обратного вызова любви, такого как love.update или love.draw, которые вызываются в цикле, вашей программе не хватит памяти. и сбой.
Я хочу услышать это!
Наш пример изображения классный, и все, кроме небольшого саундтрека, действительно имело бы здесь значение, так что давайте добавим его!
Пожалуйста, перейдите в freemusicarchive и скачайте песню Ночная сова. Это будет наш звуковой файл.
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. На самом деле это говорит любви, как следует обращаться с файлом. Если вторым аргументом является поток, файл будет прочитан с диска, что увеличивает нагрузку на диск, но экономит много памяти. Если установлено значение static, сжатый аудиофайл будет распакован и загружен в память. Небольшой файл размером 5 МБ может содержать до 50 МБ в памяти вашего компьютера после распаковки, поэтому используйте его с осторожностью.
Хороший вариант использования static — это когда вы хотите воспроизводить короткие звуки, когда происходит событие, например прыжок персонажа.
В этих случаях вы бы не хотели, чтобы звук воспроизводился в цикле, поэтому нет необходимости вызывать setLooping.
Пожалуйста, оставьте в комментариях свое мнение о второй части этого урока и подпишитесь! ; )